首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >删除wget输出中的重复行

删除wget输出中的重复行
EN

Stack Overflow用户
提问于 2018-03-01 15:36:41
回答 2查看 116关注 0票数 0

我想删除wget输出中的重复行。

我使用这个代码

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|sort |uniq;done

输出像这样

http://www.sawfirst.com/wp-content/uploads/2018/03/Selena-Gomez-12.jpg

http://www.sawfirst.com/wp-content/uploads/2018/03/Selena-Gomez-12.jpg

http://www.sawfirst.com/wp-content/uploads/2018/03/Selena-Gomez-12.jpg

http://www.sawfirst.com/wp-content/uploads/2018/03/Selena-Gomez-12.jpg

http://www.sawfirst.com/wp-content/uploads/2018/02/Selena-Gomez-760.jpg

http://www.sawfirst.com/wp-content/uploads/2018/02/Selena-Gomez-760.jpg

我要删除重复的输出行。

EN

Stack Overflow用户

回答已采纳

发布于 2018-03-01 16:36:14

在某些情况下,像美汤这样的工具变得更加合适。

尝试用wget & grep做这件事成为一个有趣的练习,这是我天真的尝试,但我非常确信有更好的方法。

代码语言:javascript
运行
复制
$ wget -q "http://www.sawfirst.com/selena-gomez" -O -|
grep -Eo "(http|https)://[a-zA-Z0-9./?=_-]*" |
grep -i "selena-gomez" |
while read url; do
    if [[ $url == *jpg ]]
    then
        echo $url
    else
        wget -q $url -O - |
        grep -Eo "(http|https)://[a-zA-Z0-9./?=_-]*" |
        grep -i "selena-gomez" |
        grep "\.jpg$" &
    fi
done | sort -u > selena-gomez

在第一轮中:

代码语言:javascript
运行
复制
wget -q "http://www.sawfirst.com/selena-gomez" -O -|
grep -Eo "(http|https)://[a-zA-Z0-9./?=_-]*" |
grep -i "selena-gomez" 

匹配所需名称的URL将被提取,在while循环中,可能是$url已经以.jpg结尾,因此它将只被打印,而不是再次获取内容。

这种方法只是深入到1级,为了加快速度,它最终使用了&广告,并打算并行执行多个请求:

代码语言:javascript
运行
复制
grep "\.jpg$" &

需要检查&锁或等待所有后台作业完成

它以sort -u结束,返回找到的项的唯一列表。

票数 -1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49053256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档