sed [duplicate]를 사용하여 두 패턴 사이의 줄을 한 번만 일치시킵니다.

sed [duplicate]를 사용하여 두 패턴 사이의 줄을 한 번만 일치시킵니다.

반면: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

관련 정보