1

我正在写一个脚本,但此刻我的脑海里一片空白。

所以基本上,我有1.txt,它有一堆IP,比如:

1.1.1.1
2.2.2.2
3.3.3.3

而且我还有另一个文件2.txt,它有这样的内容:

1.1.1.1
2.2.2.2
3.3.3.3 bad ip
4.4.4.4
5.5.5.5

中的任何东西都1.txt应该被消除2.txt,所以在处理之后,2.txt应该看起来像

4.4.4.4
5.5.5.5

通过尝试使用脚本来绘制空白

while line in `cat 2.txt` 
sed -i 's/"$line"//g' 2.txt

任何人都可以给我一些指示吗?

4

5 回答 5

3

在这里你可以grep单独使用。

grep -wv -f 1.txt 2.txt
于 2013-06-20T20:06:52.743 回答
3

GNU

sed -r 's#(.*)#/\1/d#' file1 | sed -f - file2
于 2013-06-20T19:14:54.710 回答
1

这个 awk 1-liner 应该可以完成这项工作:

awk 'NR==FNR {a[$1];next} !($1 in a)' {1,2}.txt
于 2013-06-20T19:19:55.570 回答
1

遍历 1.txt 并存储所有值。然后遍历 2.txt 的行,如果任何值与 1.txt 中的任何值匹配,则不要存储这些值。仅存储 2.txt 中与 1.txt 中的任何值都不匹配的值。

于 2013-06-20T19:11:54.840 回答
0
awk 'NR==FNR{a[$0]++;next}{for(x in a) if(index($0,x)>0) next}1' file{1,2}
于 2013-06-20T19:12:54.780 回答