2016-10-20 26 views
0

我有一個包含文字的文件,就像這些。如何否定正則表達式中的兩個特定單詞?

Good ones words: 

művész-ként 
luisz-ként 
gravid-ként 
chips-ként 
bizottság-kent 
Pannon-ként 
Nagyostobafalva-kent 

Words to remove: 

font-size 
line-height 
X-Faktor 
Calais-nál 

我需要的是在連字符不是'ként'或'kent'後刪除包含連字符和單詞的單詞。該文件還包含其他單詞unhyphenated,我必須保持(如「keresztül」,「kod」.....)。

這可以,但也消除了不包含連字符的單詞。

grep -vE "\w+-(kent|ként)  " file.txt 
+0

也許'grep P「\ w + - (?! kent |ként)」file.txt'? –

+0

@WiktorStribiżew這是行不通的。 – Firefly

回答

1

Perl的環視斷言可能簡化的解決方案:在源

perl -Mutf8 -CS -ne 'print unless /-(?!k[eé]nt)/' < file 
  • -Mutf8打開UTF-8(即使得é工作的正則表達式)
  • -CS圈UTF-8上的輸入和輸出
  • 正則表達式:破折號沒有跟着kentként
1

使用grep,你可以這樣做:

grep -E '^(\w+-k[eé]nt|[^-]*)$' file 

RegEx Demo

這將找到kentként或單詞沒有連字符結尾的連字符的單詞。

+1

這也適用!大。 – Firefly

+1

我用grep也遇到了[issue](http://stackoverflow.com/q/40053819/1527780)。你能看一下嗎? – marikamitsos

相關問題