24

我的输入:

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

这是我所期望的:

8328832,AR,UNDECLARED

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

我的尝试是

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

但它不匹配任何东西。

4

1 回答 1

33

仍在使用

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

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

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

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

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

的另一种更简单的方法

awk -F'[()]' '{print $2}' file
于 2013-08-13T20:58:17.723 回答