如何使用grep提取两个括号之间的内容?

时间:2013-08-13 20:54:32

标签: regex shell unix

   1:FAILED      +  *1      0     (8328832,AR,UNDECLARED)

这就是我的期望:8328832,AR,UNDECLARED

我试图找到一个通用的正则表达式,允许在两个括号之间取出任何内容。 我的尝试是。

  grep -o '\[(.*?)\]' test.txt > output.txt

但它无法匹配任何东西=(

由于

1 个答案:

答案 0 :(得分:23)

仍在使用

grep -oP '\(\K[^\)]+' file

\K表示使用环顾正则表达式高级功能。更准确地说,这是一个积极的后视断言,你也可以这样做:

grep -oP '(?<=\()[^\)]+' file

如果您缺少-P选项,则可以使用执行此操作:

perl -lne '/\(\K[^\)]+/ and print $&' file

使用

的另一种更简单的方法
awk -F'[()]' '{print $2}' file