1

在编程方面,我是一个初学者,我感谢您愿意提供的所有帮助。

这是我的问题...

我有一个包含很多行的 data.txt 文件和一个包含一些字符串(每行 1 个字符串)的 strings.txt 文件。

我想删除 data.txt 中的所有行,如果它们包含来自 strings.txt 的任何字符串,并将该新文件保存为 proc_data.txt。

我知道我可以使用 sed 搜索和删除 1 个或多个字符串,但是在 CLI 中键入 500 多个字符串会使它......嗯,你知道的。

到目前为止我尝试过的

~$ for i in `cat strings.txt`; do sed '/${i}/d' data.txt -i.bak; done

但它只是备份了具有相同大小的 data.txt。

我究竟做错了什么?

4

1 回答 1

3

使用grep

LC_ALL=C fgrep -v -f strings.txt data.txt >proc_data.txt

它使用 switch搜索strings.txtin的所有字符串。反转结果添加。将输出重定向到您想要的文件。data.txt-f-v

于 2012-08-31T07:58:53.460 回答