如何打印包含特殊单词的第一行

如何打印包含特殊单词的第一行

打印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

相关内容