저는 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/
다음 동일한 패턴이 포함된 마지막 줄을 건너뛰고 줄을 인쇄합니다.
이것이 최선의 접근 방식인지는 모르겠지만 효과가 있는 것 같습니다.