grep 명령어 질문
글쓴이: kokori0116 / 작성시간: 수, 2011/10/12 - 10:39오후
특정 필드에 red 라는 값이 있는 라인만 찾으려면 어떻게 해야 하나요?
예를 들어(a.txt)
a yellow yellow yellow
b red red yellow
c red blue red
d blue red white
e black black red
두번째 필드의 값이 "red" 인 라인만 출력을 하고 싶습니다.(구분자는 탭입니다.)
# grep "red" a.txt
이렇게 하게 되면 다른 필드에 red 값이 있는 라인도 출력이 되서....
Forums:
굳이 grep만을 써야하는것이 아니면 awk 로
굳이 grep만을 써야하는것이 아니면
awk 로 간단히 해결할 수 있습니다.
cat a.txt | awk '$2 == "red" { print }'
좀 더 정확하게 체크를 해보시고 싶으면
'''
해당 라인의 필드 갯수가 반드시 4개이며 ( 또는 최소한 4개이며 )
첫번째 필드는 하나의 alphabet character로 되어있는 라인의
두번째 필드가 "red"인 라인을 출력
'''
으로 정규식 표현으로 하셔도 되고
아니면, 그냥 awk 로 if 노가다로 할수도 있습니다.
생각해보니
egrep으로 정규식 잘 써서도 할수있겠군요.
^[a-e]\tred\t
^[a-e]\tred\t
간단하게는 이런 식으로도 되겠네요.
세번째라면 이런 식으로.
^[^\t]*\t[^\t]*\tred\t
그루핑 + 반복 횟수 쓰셔서 이런 식으로도 가능할지도요.
^([^\t]*\t){2}red\t
시험해보지는 않았습니다. 백슬래시를 좀 넣어주셔야 할 듯요.
댓글 달기