grep을 이용하여 특정 값이 아닌 값을 출력하는 방법 알려주세요.
안녕하세요.
grep을 이용해서 ldap access log를 분석해 출력할려고 합니다.
로그가 아래와 같이 구성되어 있습니다.
아래에서 첫줄의 RESULT err=0 이 아닌 모든 값을 추출해서 출력 할려고 합니다.
어떻게 해야 되는지 부탁 드리겠습니다.
[28/Jul/2006:22:23:03 +0900] conn=3938764 op=1 msgId=2 - RESULT err=0 tag=101 nentries=1 etime=0
[28/Jul/2006:22:23:03 +0900] conn=3938764 op=2 msgId=3 - UNBIND
[28/Jul/2006:22:23:03 +0900] conn=3938764 op=2 msgId=-1 - closing - U1
[28/Jul/2006:22:23:03 +0900] conn=3938764 op=-1 msgId=-1 - closed.
[28/Jul/2006:22:23:05 +0900] conn=3938766 op=-1 msgId=-1 - fd=75 slot=75 LDAP connection from ***.***.***.*** to ***.***.***.***
[28/Jul/2006:22:23:05 +0900] conn=3938766 op=-1 msgId=-1 - closing - B1
[28/Jul/2006:22:23:05 +0900] conn=3938766 op=-1 msgId=-1 - closed.
grep -v
grep -v 해보세요.
grep -v 를 하면 err=0 필드가 없는 라인이 다 추출됩니다 ㅠㅜ
제가 질문을 애매하게 했네요.
err=0이 아닌 즉 err=32나 기타등등의 값이 생기면 출력을 할려고 합니다.
요 라인만 하면 되거든요, 위에 다른 라인은 필요가 없습니다.
이럴때 어떻게 해야하나요.
cat | grep | grep -v
제가 제대로 이해했는지 모르겠습니다.
cat data | grep "RESULT err" | grep -v "RESULT err=0"
이렇게 하시면 원하시는 내용이 나오나요?
cat 보다는
grep "RESULT err" data | egrep -v "err=0|err=255"
파이프를 이용하지 않고 grep이 직접 파일을 여는 스타일이 저는 좋아요.
그리고 Tip을 하나 추가하자면,
'egrep' 또는 'grep -e', 'grep -E' 명령을 이용하면 정규펴현식을 쓸 수 있습니다.
위 예문에서는 "or" 의 뜻으로 "|" 을 썼습니다.
放下着-----
내려놓으려는 마음도 내려놓기
放下着-----
내려놓으려는 마음도 내려놓기
댓글 달기