您好,我有一个问题,我到处搜索过,但找不到。
我想使用 sed 命令删除包含特定字符串的行。在文本文件中,有更多行具有相同的字符串。 sed 命令必须仅删除第一个字符串,而不删除其余字符串。我该怎么做有人可以告诉我吗?我将在 shell 脚本中使用它,该脚本将被激活多次,直到它用完相同的字符串
例如我有以下几行:
aaa
aaa
aaa
bbb
ccc
我只想删除 1 行 aaa
答案1
更简单的是awk
:
awk '!/aaa/ || n++' < your-file
如果当前记录不包含,则打印当前记录aaa
,或者如果包含,则某些计数器的后增量非零(它将在第一次出现之后)。
使用 GNU sed
,您可以执行以下操作:
sed '0,/aaa/{//d}' < your-file
仅删除aaa
位于从文件开头到第一次出现 . 的行范围内的行aaa
。
请参阅sed 常见问题解答对于非 GNU sed 的其他可能方法。