当前位置: 首页 > 面试题库 >

如何使用sed仅删除文件中第一个出现的行

成浩漫
2023-03-14
问题内容

我有以下文件

titi
tata
toto
tata

如果我执行

sed -i "/tat/d" file.txt

它将删除所有包含的行tat。该命令返回:

titi
toto

但我只想删除包含的文件中出现的第一行tat

titi
toto
tata

我怎样才能做到这一点?


问题答案:

您可以使用两个地址的形式:

sed '0,/tat/{/tat/d;}' inputfile

这将删除该模式的第一次出现。

引用自info sed

 A line number of `0' can be used in an address specification like
 `0,/REGEXP/' so that `sed' will try to match REGEXP in the first
 input line too.  In other words, `0,/REGEXP/' is similar to
 `1,/REGEXP/', except that if ADDR2 matches the very first line of
 input the `0,/REGEXP/' form will consider it to end the range,
 whereas the `1,/REGEXP/' form will match the beginning of its
 range and hence make the range span up to the _second_ occurrence
 of the regular expression.


 类似资料:
  • 问题内容: 我想从文件末尾删除一些 n 行。可以使用sed完成此操作吗? 例如,要删除2到4行,我可以使用 但是我不知道行号。我可以使用删除最后一行 但我想知道从末尾删除 n 行的方法。请让我知道如何使用sed或其他方法进行操作。 问题答案: 我不知道,但是可以用:

  • 问题内容: 我需要一个衬套才能删除文本文件任何一行上的前五个字符。我如何用sed做到这一点? 问题答案: 手段 替换(“ s”,替换)行首,然后用5个字符(“。”)替换为空 。 有更紧凑或灵活的方式来使用sed或cut编写此代码。

  • 本文向大家介绍如何使用python删除一个文件?相关面试题,主要包含被问及如何使用python删除一个文件?时的应答技巧和注意事项,需要的朋友参考一下  

  • 问题内容: 我一直在网上搜索,但没有找到任何好的解决方案。 这是我的文本文件: 我要删除的是第一行(这意味着将第二行用作第一行,而不用空格填充第一行)。 有人可以帮我吗? 问题答案: 假设您有足够的内存来将所有内容保存在内存中: 我们可能会更喜欢,打开文件,阅读,然后找回开始,消除第二个,但这确实足够了。

  • 问题内容: 我正在尝试使用sed删除空行: 但我没有运气。 例如,我有以下几行: 我希望它像: 这应该是什么代码? 问题答案: 您的“空”行中可能有空格或制表符。使用POSIX类与去除只含有空格的所有行: 使用ERE的较短版本,例如gnu sed: (请注意,sed的确实 不 支持PCRE)。

  • 这个的代码应该是什么?