XXX 아래 첫 번째 123을 인쇄하세요.
AAA
BCB
DDD
123
123
XXX
CCC
123
123
MSM
123
답변1
awk 'NR == 1, /XXX/ {next}; /123/ {print; exit}' < input.txt
모든 줄은 첫 번째 포함된 줄까지 건너뛴 다음 XXX
나머지 줄 중 첫 번째 포함된 줄이 인쇄됩니다.123
변수에 저장된 문자열의 경우:
START='XXX' NEEDLE='fancy string with " and *' awk '
NR == 1, index($0, ENVIRON["START"]) {next}
index($0, ENVIRON["NEEDLE"]) {print; exit}' < input.txt
답변2
$ sed -n '/XXX/,$ { /123/ { p; q; }; }' <file
123
p
그러면 현재 행을 인쇄하는 명령이 적용 되고 q
일치하는 행에 종료 명령이 적용됩니다 123
. 테스트는 123
일치하는 첫 번째 줄 과 입력 끝(포함) XXX
사이의 모든 줄에서 수행 됩니다.
행을 제외하려면 XXX
( 123
행과 같은 줄에 표시되어서는 안 됩니다 XXX
):
$ sed -n '/XXX/,$ { /XXX/d; /123/ { p; q; }; }' <file
123