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