考虑一个名为test
的简单文件,其中包含以下文本:
abc(def)
使用awk
,如果我发现这样可行:
awk '$0 ~ "abc\(def\)"' test
但如果没有正确转义括号,它将无法工作:
awk '$0 ~ "abc(def)"' test
删除右括号,我收到了这个错误:
awk: line 1: regular expression compile failed (missing ')')
abc(def
在awk中由""
字符串常量引用的字符串是不是?为什么()
被视为字符串常量中的正则表达式特殊字符?
答案 0 :(得分:2)
如果我正确理解了这个问题,那么答案就是这样:
awk -F ',' '{ print "(" $1, $2 ")" }'
您应该在“” 之间键入(。任何特殊符号都可以用“”
打印答案 1 :(得分:1)
在查看gawk here的文档时,它说(强调我的)
正则表达式匹配和非匹配也是非常常见的表达式。该
~
和!~
运算符的左操作数是一个字符串。 正确 操作数是用斜杠括起来的常量正则表达式 (/ regexp /),或任何表达式,其字符串值用作动态 正则表达式(请参阅使用动态正则表达式一节)。
运行脚本时会创建正则表达式常量,并且在程序运行期间无法更改正则表达式,而脚本可以更改动态正则表达式。