여러 줄에 걸쳐 sed 인쇄 패턴

여러 줄에 걸쳐 sed 인쇄 패턴

저는 sed를 배우고 있는데 현재 다음과 같은 문제가 발생합니다.

^C다음 사이에 있는 줄을 추출 하고 싶습니다 .

banner exec ^C
This is
the
banner
^C
banner motd ^C
This is
the MOTD
banner
^C
!
line con 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous

나는 그것을 사용하고 있다이것참고로, 캡쳐하려는 행 수를 모른다면 좋은 생각은 아닌 것 같습니다. 이 문제를 처리하는 가장 좋은 방법은 무엇입니까?

답변1

소스 데이터가 test.txt 파일에 있다고 가정하면 다음과 같이 작동합니다. 이는 grep을 사용하여 '^C'가 포함된 행을 제외합니다.

sed -n '/\^C/,/\^C/p' test.txt|grep -v '\^C'

귀하의 예 출력 :

This is
the
banner
This is
the MOTD
banner

답변2

그래서 알아 냈습니다. 이것이 트릭을 수행하는 것 같습니다.

sed -n '/\^C/,/\^C/{/\^C/!{p}}' input

분명히 두 개의 일치하는 정규식 사이에서 sed를 실행할 수 있으므로 시작 및 종료와 동일한 정규식을 넣은 /\^C/,/\^C/다음 동일한 패턴이 포함된 마지막 줄을 건너뛰고 줄을 인쇄합니다.

이것이 최선의 접근 방식인지는 모르겠지만 효과가 있는 것 같습니다.

관련 정보