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 展开
2. B 文件含有100条不良记录.
3.A文件里的记录包含B里的文件记录 格式也一样. 假设是不良URL
3.如何用shell 写出在A文件里删除包含B 的不良URL 展开
1个回答
展开全部
#!/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
我这里只是示例,你可以修改匹配规则。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询