有没有办法在shell中使用awk
命令打印正则表达式匹配(但只有匹配的字符串)?
答案 0 :(得分:43)
是的,在awk
中使用match()
函数并为其提供可选的数组参数(在我的示例中为a
)。执行此操作时,第0个元素将是与正则表达式匹配的部分
$ echo "blah foo123bar blah" | awk '{match($2,"[a-z]+[0-9]+",a)}END{print a[0]}'
foo123
答案 1 :(得分:21)
解决方案的awk
特定(而不是gawk
)实施方案:
$ echo "blah foo123bar blah" | awk 'match($0,/[a-z]+[0-9]+/) {print substr($0,RSTART,RLENGTH)}'
foo123
答案 2 :(得分:1)
我使用这个构造了很多:
split(substr($0, match($0, /[0-9]+ [Bb]ytes/)), a, " ");
print a[1];