如何去除wget输出中的重复行?附代码及重复输出示例
解决wget爬取链接时输出重复行的问题
我看了你现在用的命令,问题出在去重的时机不对哦!你现在是在每个子页面爬取后就执行sort | uniq,这只能去掉单个页面里的重复链接,但不同页面可能会包含同一个图片的URL,所以最终输出还是会有重复。
给你调整一下命令,把去重步骤移到整个循环的外面,让所有页面的链接都汇总后再统一处理:
wget -q "http://www.sawfirst.com/selena-gomez" -O - | tr ">" "\n" | grep 'selena-gomez-' | cut -d'"' -f2 | cut -d'#' -f1 | while read url; do wget -q "$url" -O - | tr ">" "\n" | grep 'name=.*content=.*jpg' | cut -d"'" -f4 done | sort -u
为什么这样改?
- 原来的
sort | uniq是在每个子循环里单独处理,只能处理单页面内的重复; - 现在把所有子页面输出的链接先全部收集起来,最后用
sort -u(等同于sort | uniq但更高效)统一去重,就能彻底消除跨页面的重复链接了。
这样修改后,你再运行命令,应该就不会看到重复的图片URL啦!
内容的提问来源于stack exchange,提问作者SK7
相关产品推荐
相关产品推荐

