sed: 패턴 일치의 첫 번째 항목만 인쇄합니다. [중복]

sed: 패턴 일치의 첫 번째 항목만 인쇄합니다. [중복]

이와 비슷한 질문이 여럿 있는데, 여러 행에서 패턴을 검색하고 싶을 때 효율적인 해결책을 찾지 못했습니다. 다음과 같은

sed -n '/First string/,/Second string/ p' my.file

인쇄할 것이다모두패턴의 발생 횟수와 일치하지만 첫 번째 발생만 원합니다. 저는 GNU sed를 사용하고 있습니다.

답변1

q종료 모드에 도달하면 명시적으로 종료하는 데 사용됩니다 .

GNU sed에서:

$ cat foo
foo
START
bar
END
blah
START another

$ sed -n '/START/,/END/p; /END/q' foo
START
bar
END

awk어쩌면 결말 패턴을 반복하지 않는 것이 더 쉬울 수도 있습니다.

$ awk '/START/{p=1} p; /END/{exit}' foo
START
bar
END

답변2

이것이 당신이 원하는 첫 번째 발생이라면 아마도 awk이것이 더 적절할 것입니다: awk 'NR==1,/original/{sub(/original/, "replacement")} 1' file. 에서 가져옴여기.

관련 정보