如何在linux中从string1搜索到string2?

如何在linux中从string1搜索到string2?,linux,bash,sed,awk,grep,Linux,Bash,Sed,Awk,Grep,我正在编写一个bash脚本,它将下载页面,然后搜索jpg链接并下载它们。我被grep/sed命令所束缚,无法让它们找到链接。到目前为止,我已经尝试: grep -e "http.*" -e ".*jpg" -n wget.html 及 在linux中如何从http://搜索到jpg?或者除了sed,grep还有其他方法吗?据我所知,您希望从下载的HTML中提取所有字符串。我想最好每行一个 $ cat wget.html | grep -e 'http:.*jpg' |sed -e 's/^.*

我正在编写一个bash脚本,它将下载页面,然后搜索jpg链接并下载它们。我被grep/sed命令所束缚,无法让它们找到链接。到目前为止,我已经尝试:

grep -e "http.*" -e ".*jpg" -n wget.html


在linux中如何从http://搜索到jpg?或者除了sed,grep还有其他方法吗?

据我所知,您希望从下载的HTML中提取所有字符串。我想最好每行一个

$ cat wget.html | grep -e 'http:.*jpg' |sed -e 's/^.*\(http:.*jpg\).*$/\1/g'
grep只挑选包含http引用的行,sed从这些行中剔除所有其他垃圾

这仅限于每个HTML行一个http引用。如果不能假设这一点,您可以在管道的开头添加类似“tr'>''\010'的内容,以拆分具有多个标记的行

例如:

sal-xps:~  $ cat wget.html
<body>
 <img src="http://foo.jpg">
 <img src="http://bar/gronk.jpg">
</body>


sal-xps:~  $ cat wget.html | grep -e 'http:.*jpg' |sed -e 's/^.*\(http:.*jpg\).*$/\1/g'
http://foo.jpg
http://bar/gronk.jpg
sal xps:~$cat wget.html
sal xps:~$cat wget.html | grep-e'http:.*jpg'| sed-e's/^.*\(http:.*jpg\).$/\1/g'
http://foo.jpg
http://bar/gronk.jpg

grep-e“http.*-e”.*jpg“-n wget.html和sed-n'/filmix/,/jpg/p'wget.htmlbash不是一个很好的工具。linux还有什么其他选项?@Crazy_Bash perl、awk、ruby、python:)以及更多取决于发行版的内容!非常感谢。我可以设置为唯一输出吗?例如,如果页面包含两次,并且只显示一次链接,则不需要
cat
grep
。您只需执行
sed-ne的/^.*\(http:.*jpg\).$/\1/gp'文件名
即可获得结果。如果同一行上有多个URL,则此操作将不正确。
sal-xps:~  $ cat wget.html
<body>
 <img src="http://foo.jpg">
 <img src="http://bar/gronk.jpg">
</body>


sal-xps:~  $ cat wget.html | grep -e 'http:.*jpg' |sed -e 's/^.*\(http:.*jpg\).*$/\1/g'
http://foo.jpg
http://bar/gronk.jpg