Grep,如何在一条线上匹配多个括号内的字符串

时间:2016-11-25 12:47:55

标签: regex shell command-line grep

我有一些数据,其中包括一堆括号中的代码,有时在一行上有多个。

Lorem ipsum  (ABC123) dolor sit amet
consectetur adipiscing elit (BCD234)
sed do  (345CDE) eiusmod tempor (8675309) incididunt

我尝试提取括号中的字符串(grep -P -i -o "(?<=\().*(?=\))"grep -E -i -o "\(CAS.*\)")导致输出如下:

ABC123
BCD234
345CDE) eiudmod tempor (8675309

而我需要的是:

ABC123
BCD234
345CDE
8675309

我应该怎么做?我正在使用GNU grep。

我的奖金不会被无法比拟的括号打破,并从ABC123中取出ut labore (et dolore (ABC123) magna aliqua,但这并不太重要。

1 个答案:

答案 0 :(得分:0)

grep -oP '\(\K.*?(?=\))' inputfile
  

ABC123   
BCD234   
345CDE   
8675309