0

かなりの量の画像検索結果があり、それをかなりの量の実際の画像に変換したいと考えています。

すべての結果は単一の画像の HTML ページであり、すべてのファイルには部分文字列が含まれています

<title>Google-Ergebnis für [uri]</title>

[uri]は実績画像の絶対URI(http://...(.gif|.jpg|.jpeg|.bmp))です。

しかし、URIを抽出してwgetに渡す方法がわかりません。

猫 imgres.html | grep "<タイトル>" | sed 's/<title>Google-Ergebnis für http://(.*)</title>/\\1/'

4

3 に答える 3

2

この場合、grep が役立ちます。

....grep "<title>"|grep -Po "(?<=Google-Ergebnis für )[^<]*"

テスト

kent$ echo "<title>Google-Ergebnis für http://foo.bar.baz/blah.png</title>"|grep -Po "(?<=Google-Ergebnis für )[^<]*"
http://foo.bar.baz/blah.png

実際には、2 つの grep を 1 つに結合できることに注意してください。

于 2013-01-21T09:42:05.700 に答える
2

あなたはあなたのsedコマンドに近かった:

 sed -n 's#<title>Google-Ergebnis für \(http://.*\)</title>#\1#p' imgres.html 

ただし、cat、grep、および複数のパイプは必要ありません。

于 2013-01-21T14:48:05.153 に答える
0

これはどう?あなたの問題は、 grep/sed から抽出したものを に渡す方法だったと思いますwget

cat imgres.html | grep "<title>" | 
  sed 's#<title>Google-Ergebnis für \(http://.*\)</title>#\1#' |
wget -i -

もう少しコンパクト:

sed -n '/<title>/{s#.*<title>Google-Ergebnis für \(http://.*\)</title>.*#\1#;p}' imgres.html | 
  wget -i -

の区切り文字として#、通常の代わりに ins を使用していることに注意してください。/s

于 2013-01-21T09:37:08.193 に答える