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

fra*_*ede 18 regex unix shell

   1:FAILED      +  *1      0     (8328832,AR,UNDECLARED)
Run Code Online (Sandbox Code Playgroud)

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

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

  grep -o '\[(.*?)\]' test.txt > output.txt
Run Code Online (Sandbox Code Playgroud)

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

谢谢

Gil*_*not 24

仍然使用

grep -oP '\(\K[^\)]+' file
Run Code Online (Sandbox Code Playgroud)

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

grep -oP '(?<=\()[^\)]+' file
Run Code Online (Sandbox Code Playgroud)

如果你没有-P选项,你可以用做到这一点:

perl -lne '/\(\K[^\)]+/ and print $&' file
Run Code Online (Sandbox Code Playgroud)

使用另一种更简单的方法

awk -F'[()]' '{print $2}' file
Run Code Online (Sandbox Code Playgroud)