您好,如何使用 gsub 替换带括号的单词。
这里我想用 ABC/G 替换 ABC(T)
awk ' {gsub("ABC\(T\)","ABC/G")}; Print $0' "$FILENAME" > tmp.tmp && mv tmp.tmp "$FILENAME"
答案1
//
如果您使用以下格式,您可以简化整个事情gsub
:
$ echo "ABC(T)" | awk '{gsub(/ABC\(T\)/,"ABC/G")}; print $0'
ABC/G
然后,您可以通过使用print
不带参数(与 相同print $0
)或1
打印简写(计算结果awk
为 true 的表达式的默认操作,例如1;
打印当前行)来进一步简化:
$ echo "ABC(T)" | awk '{gsub(/ABC\(T\)/,"ABC/G")}1'
ABC/G
然而,就我个人而言,我不会使用awk
它,其他工具的语法更短、更清晰:
$ echo "ABC(T)" | sed 's|ABC(T)|ABC/G|'
ABC/G
$ echo "ABC(T)" | perl -pe 's|ABC\(T\)|ABC/G|'
ABC/G
答案2
你们非常亲密。你只需要两个\
。这是因为其中一个集合是通过 BASH 的文本本身,另一个集合是\
awk 正在解析的实际文本。这似乎对我有用:
echo 'ABC(T)' | awk ' {gsub("ABC\\(T\\)","ABC/G")}; Print $0' "$FILENAME"
并给出:
ABC/G