如果我想替换字符字段,请说 {,使用awk我可以使用:
awk '{ gsub(/{/, "<"); print }' file
...但这也会替换“{”(我不想要)这样的字段。是否有一个awk函数,只能找到整个字段的完全匹配(和替换);适用于所有领域。
例如,以下内容:
$ echo "foo bar zod \"{\" {" | awk '{ gsub(/{/, "<"); print }'
将输出:
foo bar zod "<" <
但我想输出:
foo bar zod "{" <
我还可以明确地迭代字段并使用 == 来检查完全匹配,但我想知道是否有替代方案。
答案 0 :(得分:3)
我会按照您的说法进行操作,遍历所有字段,使用==
或/^{$/
进行检查。
但是如果我们玩一些技巧,可以不用循环来完成:(gnu awk)
awk '$0=gensub(/(\s|^){(\s|$)/, "\\1<\\2","g")'
检查这个例子:
kent$ echo '{ foo "{" and this: { bar {'|awk '$0=gensub(/(\s|^){(\s|$)/, "\\1<\\2","g")'
< foo "{" and this: < bar <
在上面的示例中,4个{
中的3个被替换。