2014-09-06 159 views

回答

2

你可以試試它採用-P(Perl的正則表達式)參數以下grep命令,

grep -P 'foo(?:(?!bar).)*$' file 

例子:

$ cat file 
foo 123 
foo bar 
$ grep -P 'foo(?:(?!bar).)*$' file 
foo 123 

或者

只使用負先行檢查字符串bar是否在foo之後而不匹配任何後續字符河

$ grep -P 'foo(?!.*bar)' file 
foo 123 
4

在沒有grep -P像OSX您可以使用此命令awk系統:

awk -F 'foo' 'NF>1{s=$0; $1=""; if (!index($0,"bar")) print s}' file 

Script Demo

0

您可以使用-v反轉匹配:

grep -v 'foo.*bar' file 
+0

但是不會在沒有'foo'的行上匹配?但是,'grep foo | grep -v bar'可能取決於OP的要求。 – 2014-09-06 18:11:58

相關問題