2015-01-09 30 views
0

殼,我執行以下操作:不正確保存屏幕輸出的grep操作之後

grep -nri "\d" * | egrep -v "Created by|Licensed under|Copyright (c)|copyright (c)" > output.txt 

在屏幕輸出,它沒有得到我想要的結果。我只看到包含數字的行,不包括上面指定的確切字符串。

但在output.txt,它保存了我從grep -nri "\d" *得到的所有結果。 output.txt的內容並未排除上面指定的確切字符串。

如何從我的屏幕上看到反映的egrep -v命令時如何保存屏幕輸出?

+0

逃生'('和')'用反斜槓。 – Cyrus 2015-01-09 19:58:50

+0

您可以從終端複製粘貼,顯示重定向和非重定向情況下的輸出有何不同?確保包含提示,命令和輸出。 – 2015-01-09 19:59:50

+0

盲目猜測 - egrep嘗試在'|'之間包含零件到'()'或嘗試grep -Ev。但輸出到屏幕應匹配重定向結果。 – lonewasp 2015-01-09 20:01:10

回答

0

Egrep使用POSIX擴展正則表達式。如果您對alternations使用管道(|),則需要此。但是,擴展正則表達式對括號(())也有特殊用處,所以這些必須轉義。

請參閱this guide on POSIX Basic and Extended Regular Expressions作進一步解釋。

嘗試運行下面的命令,逃脫你的括號:

grep -nri "\d" * | egrep -v "Created by|Licensed under|Copyright \(c\)|copyright \(c\)" > output.txt