我可以使用sed
来检查某个命令的输出(到标准输出)的第一行,并在其匹配特定模式时删除这个第一行吗?
比如说,命令的输出类似于这样:
"AB"
"CD"
"E"
"F"
I want it to become:
"CD"
"E"
"F"
但是当第一行是"GH"
时,我不想删除这行。
我尝试了以下方法,但没有奏效:
<some_command> |sed '1/<pattern>/d'
壳告诉我:
sed: 0602-403 1/<pattern>/d is not a recognized function.
我只想使用sed处理第一行,保留其他行不变。
正确的语法是什么?
1
是第一行,!
表示如果不是
,而b
是一个break
命令,这都意味着如果不是第一行就退出并继续下一行
。对于第一行,/GH/!d
的意思是如果该行不包含GH,则删除它
。一些sed允许使用;
字符作为连接命令的方式,在BSD或Apple上可能会有所不同。 - potongman sed
中,它只告诉我b[label] Branches to the : command bearing the label variable. If the label variable is empty, it branches to the end of the script.
手册没有将b
作为一个断点命令。然而,它确实可以这样工作。我错过了什么吗? - Qiang Xu1 { /pattern/ d }
让您可以将其他命令与输入的其余部分组合在一起。 - CervEdsed '1{/GH/!d}; more sed commands' file
的东西就足够了,但是{
,}
和;
在所有变体的sed中的行为都不相同。 - potong