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)
如何解决?
这应该工作:
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)