我有这样的代码
echo abc | awk '$0 ~ "a\(b\)c" {print $0}'
如果我只想要括号而不是整行,怎么办?这显然非常简单,并且确实有很多awk代码所以我不想切换到sed或grep或者其他东西。感谢
答案 0 :(得分:3)
据我所知,您无法在pattern
部分执行此操作,您必须使用action
功能在match()
部分内执行此操作:
echo abc | awk '{ if ( match($0, /a(b)c/, a) > 0 ) { print a[1] } }'
它产生:
b
答案 1 :(得分:2)
使用GNU awk:
$ echo abc | awk '{print gensub(/a(b)c/,"\\1","")}'
b