![sed [duplicate]를 사용하여 두 패턴 사이의 줄을 한 번만 일치시킵니다.](https://linux55.com/image/131061/sed%20%5Bduplicate%5D%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EB%91%90%20%ED%8C%A8%ED%84%B4%20%EC%82%AC%EC%9D%B4%EC%9D%98%20%EC%A4%84%EC%9D%84%20%ED%95%9C%20%EB%B2%88%EB%A7%8C%20%EC%9D%BC%EC%B9%98%EC%8B%9C%ED%82%B5%EB%8B%88%EB%8B%A4..png)
반면:sed -e '/pattern1/,/pattern2/!d' file.org
패턴1과 패턴2 사이에서 처음으로 나타나는 줄을 일치시키고 나머지는 일치시키지 않는 방법은 무엇입니까?
예를 들어:
pattern1
aaaa
pattern2
pattern1
bbb
pattern
다음을 출력해야 합니다:
aaa
대체 솔루션(사용 grep
또는 기타)을 환영합니다.awk
답변1
$ cat input
a
b
c
a
b
c
$ sed -n '/a/,/c/p;/c/q' input
a
b
c
인쇄하려는 범위를 검색한 다음 첫 번째 "끝" 표시가 보이면 종료합니다.
awk
시작점과 끝점을 더 쉽게 제외할 수 있습니다.
$ awk 'BEGIN { p=0 } /c/ { p=0; exit } p {print} /a/ { p=1 }' input
b