22 releases
0.1.38 | Jun 20, 2024 |
---|---|
0.1.37 | Jan 11, 2023 |
0.1.35 | Jun 18, 2022 |
0.1.33 | Nov 15, 2021 |
0.1.26 | Mar 22, 2021 |
#598 in Text processing
Used in aki-txpr-macro
38KB
818 lines
aki-gsub
the substitude text program.
Features
- the substitude text command, replace via regex.
- minimum support rustc 1.58.1 (db9d1b20b 2022-01-20)
Command help
aki-gsub --help
Usage:
aki-gsub [options]
substitude text command, replace via regex.
Options:
--color <when> use markers to highlight the matching strings
-e, --exp <exp> regular expression
-f, --format <fmt> replace format
-n, --quiet no output unmach lines
-H, --help display this help and exit
-V, --version display version information and exit
Option Parameters:
<when> 'always', 'never', or 'auto'
<exp> regular expression can has capture groups
<fmt> format can has capture group: $0, $1, $2, ...
Environments:
AKI_GSUB_COLOR_SEQ_ST color start sequence specified by ansi
AKI_GSUB_COLOR_SEQ_ED color end sequence specified by ansi
Examples:
Leaving one character between 'a' and 'c', converts 'a' and 'c'
on both sides to '*':
echo "abcabca" | aki-gsub -e "a(.)c" -f "*\$1*"
result output:
*b**b*a
Converts 'a' to '*' and 'c' to '@':
echo "abcabca" | aki-gsub -e "a" -f "*" -e "c" -f "@"
result output:
*b@*b@*
Quick install
- you can install this into cargo bin path:
cargo install aki-gsub
- you can build debian package:
cargo deb
and install .deb into your local repository of debian package.
Examples
Example 1: simple replacements
Leaving one character between 'a
' and 'c
',
converts 'a
' and 'c
' on both sides to '*
'.
command line:
echo "abcabca" | aki-gsub -e "a(.)c" -f "*\$1*"
result output:
*b**b*a
The \$1
mean 1st capture.
Example 2: extracting email address
This extracts the email address and prints the name and address in commas.
command line:
echo "From:Red bear<aki.akaguma@example.com>" | aki-gsub -e "From: ?(.*)<([\w\d_.-]+@[\w\d_-]+\.[\w\d._-]+)>" -f "\$1, \$2"
result output:
Red bear, aki.akaguma@example.com
The \$1
mean 1st capture.
The \$2
mean 2nd capture.
Example 3: multiple format
You can specify multiple formats. See following.
command line:
echo "xxx yyy zzz" | aki-gsub -e "x(x)x" -f "a\$1a" -e "y(y)y" -f "b\$1b"
result output:
axa byb zzz
The \$1
mean 1st capture.
Library example
See fn execute()
for this library examples.
Changelogs
License
This project is licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or https://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or https://opensource.org/licenses/MIT)
at your option.
Dependencies
~3–4.5MB
~82K SLoC