텍스트 파일에서 빈 "제목" 필터링

텍스트 파일에서 빈 "제목" 필터링

내가 다음을 한다고 가정해보자

grep 'header\|error'

이제 빈 헤더 "섹션"을 모두 제거하고 싶습니다. 예를 들어 다음과 같은 출력을 원합니다.

header 1
header 2
error a
error b
header 3
error c
header 4
header 5
error d

~이 되다

header 2
error a
error b
header 3
error c
header 5
error d

답변1

입력이 표시된 것과 같다고 가정합니다. 즉, 모든 입력 줄은 "제목" 또는 "오류" 줄이고 다른 것은 없습니다...

이것은 작동합니다:

$ cat test.sh
grep -B1 --no-group-separator ^error << EOF
header 1
header 2
error a
error b
header 3
error c
header 4
header 5
error d
EOF
$ ./test.sh 
header 2
error a
error b
header 3
error c
header 5
error d

스크립트는 "error"로 시작하는 각 줄을 인쇄하고 그 앞의 줄을 인쇄합니다.

답변2

시작점으로 다음과 같이 플레이할 수 있습니다.

grep -zoP 'header.*\nerror.*\n|error.*\n' file.txt
  • -z- 파일을 한 줄로 처리하여 '\n'을 할 수 있습니다.
  • -o- 일치하는 텍스트만 인쇄
  • -P- Perl 스타일 정규식 활성화

관련 정보