带有"["和"]"分隔符的awk错误

MOH*_*MED 2 linux shell awk ash

我有字符串看起来像这样

string="xxxxx.yyyyy[2].zzzzz"
Run Code Online (Sandbox Code Playgroud)

我想提取之间的数字[ ].我使用了以下awk命令

echo $string | awk -F'[]' '{print $2}'
Run Code Online (Sandbox Code Playgroud)

但是此awk命令返回错误:

awk: bad regex '[]': Unmatched [ or [^
Run Code Online (Sandbox Code Playgroud)

如何解决?

anu*_*ava 6

这应该工作:

echo "xxxxx.yyyyy[2].zzzzz" | awk -F '[][]' '{print $2}'
2
Run Code Online (Sandbox Code Playgroud)

内部字符类]之前的顺序在[这里很重要.

这也应该通过双重转义[]使用交替正则表达式来工作:

echo "xxxxx.yyyyy[2].zzzzz" | awk -F '\\[|\\]' '{print $2}'
2
Run Code Online (Sandbox Code Playgroud)

要么:

echo "xxxxx.yyyyy[2].zzzzz" | awk -F '[\\[\\]]' '{print $2}'
2
Run Code Online (Sandbox Code Playgroud)