josefpihrt / orang

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

Home Page:https://josefpihrt.github.io/docs/orang

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

About

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

https://josefpihrt.github.io/docs/orang

License:Other


Languages

Language:C# 99.5%Language:PowerShell 0.5%