2015-01-07 72 views
2

我正在尋找兩個單獨的模式,每個模式在一些大型壓縮文件中都有特定的約束。我不能爲我的生活弄清楚如何一次grep兩種情況。我怎樣才能一次grep多種模式?

舉一個例子,一個文件每天記錄隨着時間​​的推移加起來:

MYFILE

AnimalID-Type-Mood 

Animal456-Dog-happy-day1 
Animal453-Elephant-happy-day1 
Animal896-Dog-sad-day1 
Animal405-Dog-angry-day1 
Animal443-Goat-angry-day1 
Animal453-Dog-sad-day1 
Animal473-Cat-sad-day1 
Animal452-cat-happy-day1 
Animal456-Dog-angry-day2 
Animal453-Elephant-sad-day2 
Animal896-Dog-happy-day2 
Animal405-Dog-angry-day2 
Animal443-Goat-happy-day2 
Animal453-Dog-happy-day2 
Animal473-Cat-happy-day2 
Animal452-cat-happy-day2 

到目前爲止,我已經嘗試

zcat.myfile | grep -e 'Dog|happy' | grep -e 'Cat|happy' 

從本質上講,我試圖找到多少AnimalID認爲,一隻狗很快樂,一隻貓很開心。我可以做計數和排序,我只是不知道如何運行該

回答

2

它是egrepgrep -E擴展正則表達式與更改使用(a|b) a或b。注意資本E.

2

你可以用正則表達式基本做到這一點:

grep -i '\(Dog\|Cat\)-happy' input 
3

你可以在這裏使用zgrep

zgrep -iE '(Dog|Cat)-happy' file 
+0

感謝'-i'提示!很好的接收! ;)但是,我認爲'-E'不是必需的...... – hek2mgl

+1

'-E'只允許您使用擴展正則表達式,這意味着更少的反斜槓。 –

+0

@glennjackman我喜歡反斜槓! :) – hek2mgl

3

你可以用-e選項

$ seq 10 | grep -e 5 -e 6 
5 
6 
指定多個模式
+0

簡短而富有表現力! – hek2mgl