我正在写一个剧本,但此刻在我的脑海里画了空白。
基本上,我有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
任何人都可以给我一些指示?
答案 0 :(得分:3)
GNU sed
sed -r 's#(.*)#/\1/d#' file1 | sed -f - file2
答案 1 :(得分:3)
您可以单独使用grep
。
grep -wv -f 1.txt 2.txt
答案 2 :(得分:1)
遍历1.txt并存储所有值。然后遍历2.txt的行,如果任何值与1.txt中的任何值匹配,则不存储这些值。仅存储2.txt中与1.txt。
不匹配的值答案 3 :(得分:1)
这个awk 1-liner应该做的工作:
awk 'NR==FNR {a[$1];next} !($1 in a)' {1,2}.txt
答案 4 :(得分:0)
awk 'NR==FNR{a[$0]++;next}{for(x in a) if(index($0,x)>0) next}1' file{1,2}