2

所以,在 linux 中,我有一个包含很多大文本文件的文件夹。

我想删除这些文件中包含特定关键字的所有行。有没有简单的方法可以在所有文件中做到这一点?

4

5 回答 5

3

已经有很多类似的答案了。我想补充一点,如果你想匹配this is a line containing a keyword但不匹配this is a line containing someoneelseskeyword,那么你最好在单词周围加上括号:

sed -i '/\<keyword\>/d' *.txt
于 2013-03-28T19:37:29.233 回答
2

我现在无法测试这个,但它应该让你开始

find /path/to/folder -type f -exec sed -i '/foo/d' {} ';'
  • 在目录中查找文件/path/to/folder
  • 在这些文件中查找包含foo
  • 从这些文件中删除这些行
于 2013-03-28T17:55:08.033 回答
0

当然:

for x in files*
do
    grep -v your_pattern "$x" > x && mv x "$x"
done
于 2013-03-28T17:54:39.753 回答
0

sed -i '/keyword/d' *.txt - 在你的目录中运行它。

sed-stream 编辑器,在这里使用它来删除单个文件中的行

-i 选项:在输入文件中进行永久更改

'/keywprd/' : 指定要在文件中搜索的模式或键

选项 d :通知 sed 需要删除匹配的行。

*.txt :简单地告诉 sed 使用目录中的所有文本文件作为
处理的输入,您可以像我一样指定一个单独的文件或 *.txt 之类的扩展名。

于 2013-03-28T17:59:52.720 回答
0

试试这个:

find your_path_filename |xargs sed -i '/key_word/d'
于 2013-03-28T18:03:20.903 回答