題 如何使用grep搜索多個選項


如何使用grep搜索“res”或“rep”的行?

我嘗試“grep -e res | rep”或gre -e“rep | rep” 但這不起作用。


4
2018-05-20 04:49


起源




答案:


你也可以在grep中使用-E選項,所以不需要轉義“|”,例如:

grep -E'res | rep'文件

或者,您可以使用egrep,這與grep -E相同:

egrep'res | rep'文件


13
2018-05-20 08:59



當我這樣做時,這在OS X上對我不起作用 pmset -g sched | grep -E "shutdown|restart|sleep"。 (也沒用過 egrep。) - 2rs2ts


你需要轉義管道角色:

grep 'res\|rep' file

或使用多個 -e 選項:

grep -e 'res' -e 'rep' file

7
2018-05-20 04:58





  • 正則表達式的方式是:

    編輯  grep -nis "re[sp]" <FILENAME>

  • 通過這種方式,您將看到包含“res”或“rep”的所有行

  • 還要注意 -nis 這裡絕對不重要,我就是那樣... :)


0
2018-05-20 16:13



可能你想逃避 re[sp] 如果存在名為res或rep的文件,那麼它不會被shell意外擴展。 - hlovdal
這不是必需的,因為它首先在選項列表之後,因此被解釋為模式。 - Dlf
hlovdal的評論是正確的。如果存在名為“res”和“rep”的文件,則給定的答案將會中斷,因為shell會將命令行轉換為“grep -nis rep res <FILENAME>”。因此,您不會發現任何'res'的出現 - 相反,您將在文件'res'和<FILENAME>中搜索'rep'。 - Jonathan Hartley
添加雙引號以確保模式被很好地解釋。 - Dlf