이와 비슷한 질문이 여럿 있는데, 여러 행에서 패턴을 검색하고 싶을 때 효율적인 해결책을 찾지 못했습니다. 다음과 같은
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
. 에서 가져옴여기.