awk 命令中不能使用“(”

log*_*gan 3 regex unix linux awk

我尝试在 Linux 机器中执行 awk 命令,但它抛出错误。

awk -F "VALUES(" '{print $2}'
Run Code Online (Sandbox Code Playgroud)

错误 :

awk: fatal: Unmatched ( or \(: /VALUES(/
Run Code Online (Sandbox Code Playgroud)

我也尝试过使用反斜杠,它也不起作用。

awk -F "VALUES\(" '{print $2}'

错误 :

awk: warning: escape sequence `\(' treated as plain `(' 
awk: fatal: Unmatched ( or \(: /VALUES(/
Run Code Online (Sandbox Code Playgroud)

请让我知道如何在 awk 搜索字符串中包含 (。

Ken*_*ent 6

如果 的值-F大于 1,则被视为正则表达式,因此您需要执行以下操作:

正则表达式字符类:

kent$  echo "a foo( b"|awk -F"foo[(]" '{print $1,$2}'
a   b
Run Code Online (Sandbox Code Playgroud)

逃离(

如果你真的想逃避(,你需要:

kent$  echo "a foo( b"|awk -F"foo\\\\(" '{print $1,$2}'
a   b
Run Code Online (Sandbox Code Playgroud)

或者

kent$  echo "a foo( b"|awk -F'foo\\(' '{print $1,$2}'  
a   b
Run Code Online (Sandbox Code Playgroud)