2011-12-16 9 views
0

私は、ページをダウンロードしてjpgリンクを検索し、それらをダウンロードするbashスクリプトを書いています。私はgrep/sedコマンドに悩まされていて、リンクを見つけることができません。これまで私が試してみた:linuxでstring1からstring2を検索するにはどうしたらいいですか?

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

sed -n '/http/,/jpg/p' wget.html 

をどのように私は、HTTPから検索することができます://は、LinuxでJPGしますか?あるいは、sed、grep以外の方法がありますか?

+0

はgrepを - e "http。*" -e "。* jpg" -n wget.htmlとsed -n '/ filmix /、/ jpg/p' wget.html –

+0

bashはこのための良いツールではありません – Daenyth

+0

その他のオプション私はLinux用ですか? –

答えて

1

私が理解しているように、ダウンロードしたHTMLの中からすべてhttp://...jpg個の文字列を抽出したいとします。私は理想的には1行に1つだと思います。

$ cat wget.html | grep -e 'http:.*jpg' |sed -e 's/^.*\(http:.*jpg\).*$/\1/g' 

grepはhttp refを含む行だけを選択し、sedはこれらの行から他のすべての迷惑メールを取り除きます。

これは、HTML行あたり1つの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 
+0

大変ありがとうございます –

+0

一意の出力に設定することはできますか? ://foo.jpgとhttp://foo.jpgそれは私にリンクのみのもの –

+0

add sort |パイプラインの終わりまでuniq(または単にsort -u) – smendola

関連する問題