shell命令删除具有特定文本的文本文件中的行

时间:2014-12-23 19:26:56

标签: linux shell command

查找从包含特定字符串的文本文件中删除一行(或多行)的命令。 例如 我有一个文本文件如下

Sat 21-12-2014,10.21,78%
Sat 21-12-2014,11.21,60%
Sun 22-12-2014,09.09,21%

我想删除其中包含“21-12-2014”的所有行。 我无法找到有效的解决方案。

2 个答案:

答案 0 :(得分:1)

根据 @twalberg ,这个问题还有三个替代解决方案,我正在解释这个问题的未来读者,以获得更多用途的解决方案:

使用grep命令

grep -v 21-12-2014 filename.txt

<强>解释

-v用于查找不匹配的行

使用awk命令

awk '! /21-12-2014/' filename.txt

<强>解释

!表示它将打印包含该字符串匹配的所有其他行。这不是操作者意味着无知。

使用sed命令

sed -e '/21-12-2014/d' < filename.txt

<强>解释

-e表示要执行的脚本正则表达式

d表示删除任何匹配

<将输入文件内容重定向到命令

答案 1 :(得分:0)

尝试这样做:

sed -i.bak '/21-12-2014/d' *

一些解释:

  • sed:主命令行,将鼠标指针放在
  • -i.bak:替换文件到位并在.bak文件中进行备份
  • //
  • d表示:删除