특수 단어가 포함된 첫 번째 줄을 인쇄하는 방법

특수 단어가 포함된 첫 번째 줄을 인쇄하는 방법

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

관련 정보