shell 如何在B文件里批量删除包含的A文件

A文件含有1万条记录2.B文件含有100条不良记录.3.A文件里的记录包含B里的文件记录格式也一样.假设是不良URL3.如何用shell写出在A文件里删除包含B的不良UR... A文件含有1万条记录
2. B 文件含有100条不良记录.
3.A文件里的记录包含B里的文件记录 格式也一样. 假设是不良URL
3.如何用shell 写出在A文件里删除包含B 的不良URL
展开
 我来答
百度网友5311d79
推荐于2016-05-26 · TA获得超过1.9万个赞
知道大有可为答主
回答量:6356
采纳率:71%
帮助的人:3146万
展开全部
#!/bin/sh
while read line
do
    grep "$line" B >/dev/null  #A文件的每行在B文件中查找看是否存在
    [ $? -eq 0 ] || echo "$line" >>tmp  #不存在就输出到临时文件tmp
done <A
mv tmp A  #用tmp覆盖A文件
追问
这样好像可行. 但是A文件不能用tmp 覆盖
只能在里边匹配到找删除.
不知道sed 这种写法是否可以.
追答

用sed可以,我之前回答的时候考虑过,不过由于不知道你的文件格式,所以不知要如何匹配。

#!/bin/sh
while read line
do
    grep "$line" B >/dev/null  #A文件的每行在B文件中查找看是否存在
    [ $? -eq 0 ] && sed -i '/'"$line"'/d'  #存在就从A文件中匹配删除
done <A

我这里只是示例,你可以修改匹配规则。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式