我可以使用sed
检查某个命令输出的第一行(到stdout),如果它匹配某个模式,可以删除第一行吗?
说,命令的输出是这样的:
"AB"
"CD"
"E"
"F"
我希望它成为:
"CD"
"E"
"F"
但是当第一行是"GH"
时,我不想删除该行。
我试过这个,但它不起作用:
<some_command> |sed '1/<pattern>/d'
贝壳告诉我:
sed: 0602-403 1/<pattern>/d is not a recognized function.
我只想使用sed来处理第一行,而不改变其他行。
这里的语法是什么?
答案 0 :(得分:7)
这可能对您有用:
sed -e '1!b' -e '/GH/!d' file
答案 1 :(得分:5)
你想引用第一行,然后说删除:
$ sed '1 d' file
如果您知道要删除哪一行,则无需任何模式。
使用模式,请使用以下语法:
$ sed '0,/pattern/ d' file
答案 2 :(得分:3)
这就是你想要的:
$ sed '1{/"GH"/!d}' file
答案 3 :(得分:2)
sed '1{/<pattern>/{/GH/!d}}' input
表达式中的错误可以像这样修复:
sed '1{/<pattern>/d}' input