我正在尝试使用grep来提取以http开头并以jpg结尾的网址列表。
grep -o'pictureite.com/wp-content/uploads / .......'filename
上面的代码是我得到了多远。然后我需要将这些文件名传递给curl
标题:“家庭度假”,jpg:“http://picturesite.com/wp-content/uploads/2014/01/mypicture.jpg”,所有者:“PhotoTaker”
答案 0 :(得分:0)
您可以通过执行以下操作来捕获url
模式:
grep -o 'http.*.jpg' file
$ grep -o 'http.*.jpg' <<EOF
> title : "Family Vacation", jpg:"http://picturesite.com/wp-content/uploads/2014/01/mypicture.jpg", owner : "PhotoTaker
> EOF
http://picturesite.com/wp-content/uploads/2014/01/mypicture.jpg
curl
不会从标准输入中获取url
,因此您最好的选择是将提取的url
存储到文件中,然后一次读取一行文件并传递将行保存到curl
命令的变量。
答案 1 :(得分:0)
sed -nr 's/http\S*(jpg\|gif\|other\|ext)/\
curl $CURLOPTS & >$OUT/p' <$infile | sh -n
上面的命令将搜索$ infile以查找以“http”开头的任何字符串,后跟任意长度的非空白字符,并以任何“\ |”结尾括号中包含的分隔文件扩展名。
一旦发现这样的字符串sed将其替换为第二行的curl命令行以替换“&amp;”。然后它将命令字符串传递给sh以便执行。
请记住,sed是流编辑器,而不仅仅是流搜索器,因此它可以非常有效地预处理其他命令的输入,以使它们按照您的需要进行操作。
注意:sh当前传递的是'noexecute'参数,它基本上更像echo而不是其他任何东西。当你运行它几次并且满意的时候你正在做正确的事情,你需要将它移除以获得任何效果。
注2:如果您有可能想要每行匹配多个网址,则需要使用'g'sed选项。