使用sed删除包含多个字符串的所有行

时间:2014-09-24 21:02:45

标签: bash shell unix awk sed

我有两个文件。我想从log.txt

中删除所有字符串(在url.txt中)

第一个文件是url.txt

google.com
bing.com
yahoo.com

第二个文件是log.txt

   1.2.3 www.google.com bot
   626.7.7 www.yahoo.com browser
   35.5.6 www.test.com  search
   44.6.6 www.bing.com  web

我想要这个输出:

35.5.6 www.test.com  search

此代码适用于字符串,但我希望从log.txt删除所有字符串(在url.txt中)

sed -i '/$string/d' log.txt

3 个答案:

答案 0 :(得分:6)

您可以使用此grep -v

grep -vwFf url.txt log.txt
35.5.6 www.test.com  search

答案 1 :(得分:2)

awk 'NR==FNR{urls["www."$1]; next} !($2 in urls)' url.txt log.txt

以上内容仅匹配log.txt

特定所需字段中的特定网址

答案 2 :(得分:0)

扩展sed脚本,这是扩展脚本,用于解析url.txt中的每一行,并删除log.txt中的对应字符串

while read string
do
    sed -i '/$string/d' log.txt
done < url.txt