如何仅删除带有特定字符串的 1 行

如何仅删除带有特定字符串的 1 行

您好,我有一个问题,我到处搜索过,但找不到。

我想使用 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 的其他可能方法。

相关内容