如何在匹配时仅使用sed有条件地删除第一行?

Qia*_* Xu 6 sed

我可以sed用来检查某个命令输出的第一行(到stdout)并删除第一行,如果它匹配某个模式吗?

比方说,命令的输出是这样的:

"AB"
"CD"
"E"
"F"
Run Code Online (Sandbox Code Playgroud)

我希望它成为:

"CD"
"E"
"F"
Run Code Online (Sandbox Code Playgroud)

但是当第一行是"GH",我不想删除该行.

我试过这个,但它不起作用:

<some_command> |sed '1/<pattern>/d'
Run Code Online (Sandbox Code Playgroud)

贝壳告诉我:

sed: 0602-403 1/<pattern>/d is not a recognized function.
Run Code Online (Sandbox Code Playgroud)

我只想使用sed处理第一行,而其他行保持不变.

这里的语法是什么?

pot*_*ong 7

这可能对你有用:

sed -e '1!b' -e '/GH/!d' file
Run Code Online (Sandbox Code Playgroud)


Ale*_*lke 5

你想引用第一行,然后说删除:

$ sed '1 d' file
Run Code Online (Sandbox Code Playgroud)

如果您知道要删除哪一行,则无需任何模式.

使用模式,使用以下语法:

$ sed '0,/pattern/ d' file
Run Code Online (Sandbox Code Playgroud)

  • 不,我想删除第一行,前提是里面有某种模式。 (2认同)