【问题标题】:Search specific word and delete it from file in linux在linux中搜索特定单词并将其从文件中删除
【发布时间】:2017-09-24 00:37:23
【问题描述】:

我有一个文件 (file1.txt),其中包含以下文本:

mon
tue
tue_day
tuesday
wed

我想搜索单词“tue”并将其从该文件中删除。 我用过

sed -i "/tue/d" file1.txt

但它会删除所有包含 tue 单词的行,即第 2,3 和 4 行。我想删除唯一的第 2 行,其中包含我想从文件中删除的完全相同的文本。

你能推荐一下吗?

【问题讨论】:

  • google regexp tutorial 并接受它。

标签: linux sed


【解决方案1】:

只需告诉sed,您想要正好是“tue”的行。如何?前置和附加 ^$ 以指示行的开头和结尾:

$ sed '/^tue$/d' file
mon
tue_day
tuesday
wed

要替换为变量中给定的内容,请使用如下双引号:

var="tue"
sed -i "/^$var$/d" file

【讨论】:

  • 谢谢它的工作......还有一个查询如何在 sed 命令中使用变量代替“tue”?就像现在我使用: sed -i "/$var/d" file
  • @SagarPatil 只需说var="tue",然后说sed -i "/^$var$/d" file。请注意,您必须使用双引号来扩展变量。我已经更新了我的答案以反映这一点。
  • 考虑让脚本中暴露给 shell 的部分尽可能简短:sed -i '/^'"$var"'$/d' file。我认为在这种情况下它并不重要,但它是一种更健壮的风格来养成使用习惯,所以当你的脚本变得更大和/或更复杂时,你不会对 gothcas 感到惊讶。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-11
  • 2017-04-26
  • 1970-01-01
  • 2022-12-06
  • 1970-01-01
  • 2015-02-18
  • 2016-12-08
相关资源
最近更新 更多