과 일치하는 줄을 제거 I이 (irssi에 의해 생성) IRC 로그에서 날짜를 구문 분석에 대한 다음과 같은 간단한 스크립트다음 라인이 특정 패턴
#!/bin/bash
query=$1
grep -n $query logfile > matches.log
grep -n "Day changed" logfile >> matches.log
cat matches.log | sort -n
그것은 생산 출력과 같은 :
--- Day changed Tue Jul 03 2012
--- Day changed Wed Jul 04 2012
--- Day changed Thu Jul 05 2012
16:54 <@Hamatti> who let the dogs out
--- Day changed Fri Jul 06 2012
--- Day changed Sat Jul 07 2012
--- Day changed Sun Jul 08 2012
12:11 <@Hamatti> dogs are fun
그러나 이후 나는 실제 경기 일정을 찾는 데에만 관심이있다. 나는 모든 것을 걸러 내고 싶다.
--- Day changed XXX XXX dd dddd
행은 다음 행의 시간 소인을 따라 가지 않습니다. 따라서 예제는 유용하지 않은 모든 잘못된 정보를 제거하기 위해
--- Day changed Thu Jul 05 2012
16:54 <@Hamatti> who let the dogs out
--- Day changed Sun Jul 08 2012
12:11 <@Hamatti> dogs are fun
을 출력해야합니다.
편집. T. Zelieke가 대답 한 후에 나는 이것을 한 줄짜리로 만들 수 있음을 깨달았습니다. 그래서 이제 로그 파일을 두 번 반복하지 않도록 저장합니다.
는query=$1
egrep "$query|Day changed" logfile |grep -B1 "^[^-]" |sed '/^--$/d'
감사합니다.이 점이 매력입니다. 교육적인 목적으로 조금 열 수 있습니까? 왜 작동합니까? 편집. 설명 주셔서 감사합니다! – Hamatti
그런 간단한 대답. :) –