awk中的grouping匹配


awk中的grouping匹配
 
很多时候,用awk的时候想匹配某几个单词,正则表达式中叫grouping,要匹配的内容放到圆括号()中
比如我要找三个放到尖括号<>中的内容,这样:
 
gawk '{ match($0,/.*<(.+)>.*<(.+)>.*<(.+)>/, a);print a[1] a[2] a[3]}'
asdfsdf<1111>asdfdf<222><333>
1111222333
aaaaaaaaaaaaaaaaaaaafff
 
ffff<jack>bbbbbbbb
 
没有找到打印空字符,再判断一下就可以了
比如匹配必需在行尾:
 
gawk '{ if (match($0,/.*<(.+)>$/, a)) print a[1]}'
aaaa<tom>
tom
aaaa<tom>jack
aaaaJack<tom>
tom
 

相关内容

    暂无相关文章