Awesome
Orang <img align="left" width="48px" height="48px" src="images/orang-logo-small.png">
Orang is a cross-platform command-line tool for:
- searching files, directories and files' content,
- replacing files' content,
- copying files and directories,
- moving files and directories,
- renaming files and directories,
- deleting files, directories or its content,
- synchronizing content of two directories,
- spellchecking files' content,
- executing Regex functions such as match or split
All these commands are powered with .NET regular expression engine.
Requirements
Orang requires .NET Core Runtime 3.1 or higher.
How to Install
Orang is distributed as a .NET Core global tool. To install Orang run:
dotnet tool install -g orang.dotnet.cli
To install non-alpha version run:
dotnet tool install -g orang.dotnet.cli --version <VERSION>
To update Orang run:
dotnet tool update -g orang.dotnet.cli
How to Use
orang [command] [parameters]
Basic Commands
For a list of all commands please see documentation.
How to Learn
For a full list of commands, parameters and parameter values run:
orang help [command] [-v d]
For a full manual run:
orang help -m [-v d]
For a full list of .NET regular expressions syntax run:
orang list-patterns
Features
Single match can span over multiple lines
Orang supports matches across multiple lines.
Dry run
The option -d, --dry-run
gives you opportunity to see the results before you actually replace, rename or delete anything.
Display match and replacement side-by-side
The option -t, --highlight
with values m[atch] r[eplacement]
gives you opportunity to see the match and the replacement side-by-side in the output.
Use C# code to compute replacements
Use -r, --replacement <EXPRESSION> cs[harp]
syntax to specify C# inline expression.
The expression is considered to be expression-body of a method with signature string M(Match match)
Use -r, --replacement <CODE_FILE_PATH> cs[harp] f[rom-file]
syntax to specify C# code file.
This code file must contain public method with signature string M(Match match)
.
Load pattern from a file
The more complicated a pattern is, the less readable it becomes when written in one line.
orang find --content "(?x)(?<=(\A|\.)\s*)\p{Ll}\w+\b"
The option f[rom-file]
gives you opportunity to store pattern in a file where it can be formatted.
orang find --content "pattern.txt" from-file
or
orang find -c "pattern.txt" f
Note: Replacement string can be store in a file as well.
Sample Command
Goal: Capitalize first character of a word at the beginning of the text or at the beginning of a sentence.
File pattern.txt
has following content:
(?x) # set multiline option
(?<= # is preceded with
(\A|\.) # beginning of text or a dot
\s* # zero or more white-space characters
)
\p{Ll} # lowercase letter
\w+ # one or more word characters
\b # word boundary (between word and non-word character)
orang replace ^
--extension txt ^
--content "pattern.txt" from-file ^
--replacement "char.ToUpper(match.Value[0]) + match.Value.Substring(1)" csharp ^
--highlight match replacement ^
--display path=omit summary ^
--dry-run
or
orang replace -e txt -c "pattern.txt" f -r "char.ToUpper(match.Value[0]) + match.Value.Substring(1)" cs -t m r -y p=o su -d