在 awk 中使用 gsub 用括号替换单词

Ray*_*azi 3 awk string text-processing regular-expression

嗨,我如何使用 gsub 替换带有括号的单词。

这里我想用 ABC/G 替换 ABC(T)

awk ' {gsub("ABC\(T\)","ABC/G")}; Print $0' "$FILENAME" > tmp.tmp && mv tmp.tmp "$FILENAME"
Run Code Online (Sandbox Code Playgroud)

ter*_*don 6

如果您使用以下//格式,您可以简化整个事情gsub

$ echo "ABC(T)" | awk '{gsub(/ABC\(T\)/,"ABC/G")}; print $0'
ABC/G
Run Code Online (Sandbox Code Playgroud)

然后,您可以通过使用print不带参数(与 相同print $0)或1打印的简写(awk计算结果为 true 的表达式的默认操作,例如1;打印当前行)来进一步简化:

$ echo "ABC(T)" | awk '{gsub(/ABC\(T\)/,"ABC/G")}1'
ABC/G
Run Code Online (Sandbox Code Playgroud)

但是,就我个人而言,我不会使用awk它,其他工具的语法更短更清晰:

$ echo "ABC(T)" | sed 's|ABC(T)|ABC/G|'
ABC/G

$ echo "ABC(T)" | perl -pe 's|ABC\(T\)|ABC/G|'
ABC/G
Run Code Online (Sandbox Code Playgroud)