Skip to content

Search, replace, rename and delete directories, files and its content using the power of .NET regular expressions.

License

Notifications You must be signed in to change notification settings

josefpihrt/orang

Repository files navigation

Orang

Orang is a cross-platform command-line tool for:

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

Capitalize first character in a sentence

Links