OS/LINUX, UNIX
[UNIX/LINUX] grep 시 윗줄, 아랫줄 내용 같이 출력하기
KeuangKuo
2022. 3. 21. 10:54
#01. LINUX 환경
CentOS7 로 테스트 하였음
참고 글 : https://eat-hokey.tistory.com/7
test.log 파일 중 test라는 단어가 들어가는 row 포함 아래 5줄을 같이 출력
grep -A 5 "test" test.log
test.log 파일 중 test라는 단어가 들어가는 row 포함 위 5줄을 같이 출력
grep -B 5 "test" test.log
test.log 파일 중 test라는 단어가 들어가는 row 포함 위, 아래 5줄을 같이 출력
grep -A 5 -B 5 "test" test.log
#02. UNIX 환경
AIX7.1 로 테스트 하였음
참고 글 : https://stackoverflow.com/questions/1685678/advanced-grep-unix
아래의 명령어를 실행한다.
grep 명령어 실행 전, 같이 출력할 line 갯수 지정
$ before=2 같이 출력할 윗줄 갯수
$ after=2 같이 출력할 아랫줄 갯수
before 지정
$ grep -n <pattern> <filename> | cut -d':' -f1 | xargs -n1 -I % awk "NR>=%-$before" <filename>
after 지정
$ grep -n <pattern> <filename> | cut -d':' -f1 | xargs -n1 -I % awk "NR<=%+$after" <filename>
before, after 함께 지정
$ grep -n <pattern> <filename> | cut -d':' -f1 | xargs -n1 -I % awk "NR<=%+$after && NR>=%-$before" <filename>
아래와 같이 별도 shell 스크립트에 정리해두면 편할 듯
shell 스크립트 실행 결과를 별도 text 파일에 기록하도록 하였다.
grep 실행 결과를 result.txt 파일에 기록
로그 점검 시에 활용하면 좋을 듯
before=2
after=2
grep -n 'RUNNING' m1.out | cut -d':' -f1 | xargs -n1 -I % awk "NR<=%+$after && NR>=%-$before" m1.out >> result.txt_$(date +"%Y-%m-%d")
grep.list 를 활용한 예시
before=2
after=2
grep -n -f grep.list m1.out | cut -d':' -f1 | xargs -n1 -I % awk "NR<=%+$after && NR>=%-$before" m1.out >> result.txt_$(date +"%Y-%m-%d")