我发现这个问题与我想要的完全相关:在Unix中使用awk或sed进行解析,但我无法弄清楚以下内容:
's/\([,=]\) /\1/g'
Run Code Online (Sandbox Code Playgroud)
我知道g会进行全局替换,但实际上无法理解问题背景下发生了什么.
Pau*_*ce. 39
这是一个简单的例子:
$ echo 'abcabcabc' | sed 's/\(ab\)c/\1/'
ababcabc
$ echo 'abcabcabc' | sed 's/\(ab\)c/\1/g'
ababab
$ echo 'abcabcabc' | sed 's/\(ab\)\(c\)/\1d\2/g'
abdcabdcabdc
Run Code Online (Sandbox Code Playgroud)
在第一个命令中,只有第一个匹配受到影响.在第二个命令中,每个匹配都会受到影响.在这两种情况下,都\1指的是转义括号所捕获的字符.
在第三个命令中,指定了两个捕获组.它们通过使用\1和引用\2.最多可以使用九个捕获组.
除了g(全局)运算符(或没有它,第一个匹配),您可以指定特定匹配:
$ echo 'aaaaaa' | sed 's/a/A/4'
aaaAaa
Run Code Online (Sandbox Code Playgroud)
med*_*iev 15
\(...\)将捕获在parens内部指定的字符,\1并将用于引用第一个匹配,这是正则表达式的一部分.