Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有这样的代码
echo abc | awk '$0 ~ "a\(b\)c" {print $0}'
如果我只想要括号中的内容而不是整行怎么办?这显然是非常简化的,而且真的有很多 awk 代码所以我不想切换到 sed 或 grep 什么的。谢谢
据我所知,您不能在pattern零件中执行此操作,您必须在action具有以下match()功能的零件内执行此操作:
pattern
action
match()
echo abc | awk '{ if ( match($0, /a(b)c/, a) > 0 ) { print a[1] } }'
它产生:
b
使用 GNU awk:
$ echo abc | awk '{print gensub(/a(b)c/,"\\1","")}' b