add string replace --filter flag

Fixes #3348
This commit is contained in:
Kurtis Rader
2017-04-27 21:53:39 -07:00
parent 48d5342601
commit 16816a1202
6 changed files with 93 additions and 60 deletions

View File

@@ -13,7 +13,7 @@ string trim [(-l | --left)] [(-r | --right)] [(-c | --chars CHARS)]
string escape [(-n | --no-quoted)] [STRING...]
string match [(-a | --all)] [((-f | --filter)] [(-i | --ignore-case)] [(-r | --regex)]
[(-n | --index)] [(-q | --quiet)] [(-v | --invert)] PATTERN [STRING...]
string replace [(-a | --all)] [(-i | --ignore-case)] [(-r | --regex)]
string replace [(-a | --all)] [(-f | --filter)] [(-i | --ignore-case)] [(-r | --regex)]
[(-q | --quiet)] PATTERN REPLACEMENT [STRING...]
string repeat [(-n | --count)] [(-m | --max)] [(-N | --no-newline)]
[(-q | --quiet)] [STRING...]
@@ -76,7 +76,13 @@ Exit status: 0 if at least one match was found, or 1 otherwise.
\subsection string-replace "replace" subcommand
`string replace` is similar to `string match` but replaces non-overlapping matching substrings with a replacement string and prints the result. By default, PATTERN is treated as a literal substring to be matched. If `-r` or `--regex` is given, PATTERN is interpreted as a Perl-compatible regular expression, and REPLACEMENT can contain C-style escape sequences like `\t` as well as references to capturing groups by number or name as `$n` or `${n}`. Exit status: 0 if at least one replacement was performed, or 1 otherwise.
`string replace` is similar to `string match` but replaces non-overlapping matching substrings with a replacement string and prints the result. By default, PATTERN is treated as a literal substring to be matched.
If `-r` or `--regex` is given, PATTERN is interpreted as a Perl-compatible regular expression, and REPLACEMENT can contain C-style escape sequences like `\t` as well as references to capturing groups by number or name as `$n` or `${n}`.
If you specify the `-f` or `--filter` flag then each input string is printed only if a replacement was done. This is useful where you would otherwise use this idiom: `a_cmd | string match pattern | string replace pattern new_pattern`. You can instead just write `a_cmd | string replace --filter pattern new_pattern`.
Exit status: 0 if at least one replacement was performed, or 1 otherwise.
\subsection string-repeat "repeat" subcommand