grep에서 정규표현식 질문합니다.
글쓴이: hattush / 작성시간: 월, 2012/06/18 - 12:58오후
grep 명령어를 이용해서 특정 문자열 필터링하려고 합니다.
[root@localhost conf]# grep -n 'CustomLog' httpd.conf
243: # a CustomLog directive (see below).
260: CustomLog "logs/access_log" common
266: #CustomLog "logs/access_log" combined
#grep -n '^CustomLog' httpd.conf
#가 붙지 않은 CustomLog를 포함한 260행만 출력하려고 위와같이 명령을 줬는데 아무 결과가 나타나지 않습니다.
정규표현식 초보라 그런지 헷갈리네요
많은 도움부탁드립니다.
Forums:
'^' 가 "라인의 첫 번째 컬럼에서 시작하는"
'^' 가 "라인의 첫 번째 컬럼에서 시작하는" 의미를 가지고 있습니다. 그러므로 라인 첫번 째 컬럼에 '#' 이 붙은 라인은 매칭되지 않습니다.
Life rushes on, we are distracted
안되면..
grep -n 'CustomLog' httpd.conf | grep -v '#'
맞을꺼예요. v옵션이 제외패턴으로 기억하고 있어요.
--- 나는요? ---
리눅스와 솔라리스 그리고 윈도우의 껍데기만 맛보고 있습니다.
질문하신 분이 본문에 쓰신 건 제대로 쓰신 거 맞지
질문하신 분이 본문에 쓰신 건 제대로 쓰신 거 맞지 않나요. 각 줄 처음에 # 없이 곧바로 CustomLog 이 나오는 줄만 출력하는 거.
제가 지금 테스트해봐도 잘 되고요. 딱히 쉘이 먼저 '^'을 처리하지도 않을테니 잘 되어야 정상인데 좀 이상하네요.
다만 좀 맘에 걸리는 게, 저 출력화면은 그대로 긁어서 붙이신 건가요? grep에 -n 옵션 붙여서 행번호가 나올 때, 저는 콜론 뒤에 공백 없이 곧바로 나오거든요.
그러니 저 출력화면이 그대로 복사,붙여넣기 한 거라면 로그 파일에 각 줄 처음에 스페이스가 한 칸 있다는 얘기고, 그러면 검색을 '^ CustomLog' 로 해야 나오겠네요.
좋은 하루 되세요!
댓글 달기