我想grep
一个字。然后,我想打印下一个匹配的行。
例如:输入文件
AAAA
BBBB
CCCC
BBBB
CCCC
EEEE
AAAA
WWWW
CCCC
输出
AAAA
CCCC
AAAA
CCCC
我希望每次都先搜索AAAA
,然后在CCCC
之后打印第一行。如果可能,请使用grep
帮助。
答案 0 :(得分:1)
使用此作为样本文件:
$ cat file2
AAAA
BBBB
CCCC
BBBB
CCCC
EEEE
AAAA
WWWW
CCCC
要打印包含AAAA
的每一行,然后打印包含CCCC
的第一行,请使用:
$ sed -n '/AAAA/,/CCCC/ {/AAAA/p;/CCCC/p}' file2
AAAA
CCCC
AAAA
CCCC
“我想首先搜索AAAA,然后用CCCC打印第一行。”
使用此作为样本文件:
$ cat file
AAAA
BBBB
CCCC
BBBB
CCCC
EEEE
匹配包含CCCC
的第一行之后出现的包含AAAA
的第一行:
$ sed -n '/AAAA/,$ {/CCCC/{p;q}}' file
CCCC
工作原理:
-n
这告诉sed
除非我们明确要求,否则不要打印任何内容。
/AAAA/,$ {/CCCC/{p;q}}
/AAAA/,$
是一个范围。它指定只有当我们在匹配AAAA
的行和文件中的最后一行(表示为$
)之间执行大括号后面的命令时才会执行。
/CCCC/
是另一个条件。它告诉sed
仅当我们在匹配CCCC
的行上时执行以下命令。
{p;q}
是一组两个命令。 p
告诉sed
打印当前行。 q
告诉sed
退出(因此不会再读取或匹配其他行)。