2017-10-14 73 views
0

我有一個表達式可以刪除所有的括號,但是我想離開「(2017)」完好無損。我正在使用sed進行更改。正則表達式除去特定的一個匹配的所有括號

表達:

(\([^)]+\)) 

示例數據:

(abc2678) aaaa (2017) aaaa (def0719) 
(abc2678) aaaa 
(abc2678) aaaa (2017) aaaa (def0719)(def0719) 
(abc2678) aaaa aaaa (def0719)(def0719) 
+0

你的意思是像[THIS](https://regex101.com/r/FraZ4t/1)? – Gurman

+1

你應該添加預期的輸出。不清楚你是否只想刪除'()'或其內的內容 – Sundeep

回答

0

嘗試以下,讓我知道,如果這可以幫助你。

awk '{for(i=1;i<=NF;i++){if($i !~ /\(2017\)/){sub(/\(.*\)/,"",$i)}}} 1' Input_file 

輸出如下。

aaaa (2017) aaaa 
aaaa 
aaaa (2017) aaaa 
aaaa aaaa 

以上將刪除(至)除(2017)之外的所有內容。如果你只想刪除(和)(2017),那麼下面的內容可能會幫助你。

awk '{for(i=1;i<=NF;i++){if($i !~ /\(2017\)/){gsub(/\(|\)/,"",$i)}}} 1' Input_file 

輸出如下。

abc2678 aaaa (2017) aaaa def0719 
abc2678 aaaa 
abc2678 aaaa (2017) aaaa def0719def0719 
abc2678 aaaa aaaa def0719def0719 
相關問題