2014-10-30 4 views
0

일부 로그 파일을 검토하려고하며 다른 소프트웨어에서 사용하기 위해 데이터를 잘라야합니다.bash를 사용하여 파일의 일부 행만 인쇄하십시오.

Oct2614 status:ok 0.86.50.86 
Oct2614 status:ok 0.111.122.11 
Oct2714 status:ok 0.21.24.111 
Oct2814 status:ok 0.15.121.12 
Oct2814 status:ok 0.61.51.25 

(IP addresses not real) 

내가 하루에 하나의 상태 코드를 인쇄 할, 그래서 내가 어떻게 예를 들어, Oct2614 status:ok 0.86.50.86를 들어, 인쇄 및 두 번째 인스턴스 Oct2614 status:ok 0.111.122.11을 무시할 수 : 로그 파일은 다음과 같이? bash를 사용하는 것이 가장 좋을 것입니다. 그래서 간단히 .sh 파일을 만들어 여러 위치에서 사용할 수 있습니다.

나는 grep 'Oct2614' | uniq을 사용해 보았지만 bash 명령에는 익숙하지 않습니다. 날짜가 동일한 문자 수는 항상 경우

+1

그리고 무슨 일이 지금까지 시도 않았다 : 특정 날짜가 일치의 수를 제한하는 grep -m를 시도? 이것은 코드 작성 웹 사이트가 아닙니다. –

+0

죄송합니다. 추가하지 않았습니다. 위에 게시 됨. –

+1

당신은'Oct ... status : error ...'가있는 경우를 허용하고 싶습니까? 여기에 답장하는 대신이 정보로 질문을 수정하십시오. 행운을 빕니다. – shellter

답변

2
awk '{if (a[$1]++==0) print $0}' file.txt 
1

, 처음 7 개 문자가 이전 행과 동일한 라인을 숨길 uniq -w를 사용

$ uniq -w7 log.txt 
Oct2614 status:ok 0.86.50.86 
Oct2714 status:ok 0.21.24.111 
Oct2814 status:ok 0.15.121.12 

당신의 첫 번째 항목을 검색하려면

$ grep -m1 '^Oct2614' 
Oct2614 status:ok 0.86.50.86 
관련 문제