我有一个文本文件(比如文件)
Name
aaa
bbb
ccc
Name
xxxx
Name
yyyy
tttt
我想从文件中删除“Name”,除非它出现在标题中。我知道sed
删除了行,但是如果我这样做
sed '/Name/d' file
删除所有“名称”。
所需的输出:
Name
aaa
bbb
ccc
xxxx
yyyy
tttt
你能建议我应该使用哪些选项吗?
答案 0 :(得分:2)
如果您知道第一个标题位于第一行,请跳过它:
sed '1!{/Name/d}' infile
这意味着该模式应该适用于除第1行以外的所有行。
或者相反:
sed -n '2,${/Name/d};p' infile
也许是awk
:
awk '/Name/ && c++ == 0 || !/Name/' infile
所有情况下的输出:
Name
aaa
bbb
ccc
xxxx
yyyy
tttt
答案 1 :(得分:2)
使用此:
sed '1!{/Name/d}' file
上一个命令适用于除第一行以外的所有行。
答案 2 :(得分:2)
您可能会发现awk语法更直观:
awk 'NR==1 || !/Name/' file
以上只是说if it's line number 1 or the line doesn't include "Name" then print it