shell比较两个文本从其中一个文本删除另一个文本已有的行

notauth.txt 文本有多个IP,一个一行

2.txt文本也有多个IP,一个一行

现在将notauth.txt文本里面包含有2.txt文本内容的从notauth.txt文本里面删除

#!/bin/bash
cp notauth.txt notauth.txt`date +%y%d%m%H%M%S`   #修改前先备份
a=`cat 2.txt`                                    
for hosts in $a                                  #遍历2.txt的每一行
do
cat notauth.txt | grep $hosts                    #匹配行
hn=`echo $?`                                     #匹配结果,$?为0则配匹成功,须从notauth.txt删除这一行
if [ $hn -eq 0 ];                                
then
sed -i '/'"$hosts"'/d' notauth.txt               #删除行,sed操作变量$hosts,用一对单引号包住一对双引号引用变量'"$hosts"'

fi
done

 

 

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页