2015-01-07 3 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

a 또는 b에 대해 (a|b)을 사용하는 확장 정규 표현식의 경우 egrep 또는 grep -E이다. 자본 E.는

당신은 기본 정규식으로 그것을 할 수
2

참고 :

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

현재 zgrep를 사용할 수 있습니다

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

'-i' 힌트를 보내 주셔서 감사합니다! 좋은 캐치! ;) 그러나, 나는'-E'가 필요하지 않다고 생각한다 ... – hek2mgl

+1

'-E'는 확장 정규 표현식을 사용할 수있게하여 백 슬래시의 수를 줄인다. –

+0

@ 글렌 잭맨 나는 백 슬래시를 좋아한다! :) – hek2mgl

3

당신은 -e 옵션

$ seq 10 | grep -e 5 -e 6 
5 
6 
여러 패턴을 지정할 수 있습니다
+0

짧고 표현력이 뛰어납니다! – hek2mgl

관련 문제