我有两个文件。我想删除所有来自log.txt的字符串(在url.txt)使用sed删除包含多个字符串的所有行
第一个文件是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
这会错误地删除较长的URL(如果存在),例如如果log.txt包含“44.6.6 www.stabbing.com web”,它将与“bing.com”相匹配。您需要为grep添加'-w' arg。这仍然会给你带来一个问题,那就是它会错误地删除一行,比如'44.6.6 www.stabbing.com很高兴这不是bing.com',因为它在任何特定领域都不匹配,但这可能不是问题。 – 2014-09-25 02:28:01
谢谢埃德,我在这个grep命令中添加了-w。 – anubhava 2014-09-25 03:35:35
明白你的观点,但并不是说stabbing.com会被保留下来。他说“全部字符串”不限于根域。一个'bing.com.phising.to'(可能希望)被删除(但你保持你的+1; - D) – NeronLeVelu 2014-09-25 05:19:20