私はチェーンに行きますが、少し異なります。あなたのようなテキストスニペットがstrings.txtと呼ばれるテキストファイルにある場合は、次のようにすることができます:
grep http ./strings.txt | sed 's/http/\nhttp/g' | grep ^http | sed 's/\(^http[^ <]*\)\(.*\)/\1/g' | grep IWANTthis | sort -u
説明:
grep http ./st3.txt => will catch lines with http from text file
sed 's/http/\nhttp/g' => will insert newline before each http
grep ^http => will take only lines starting with http
sed 's/\(^http[^ <]*\)\(.*\)/\1/g'
=> will preserve string from ^http until first space or < (the latter in hope if
grep IWANTthis => will take only urls containing your text of your interest; you can omit this.
sort -u => will sort the list and remove duplicates from it
URLが機能しない可能性があるため、目的のURLで追加のエラーチェックを実行できます。例wget -p URL -O /dev/null
-URLが利用できない場合、まったく異なるエラーコードを出力するため、リンクのリストを処理して有効性ステータスを出力するループを設定できます。
最終的にhtmlファイルからリンクを抽出する場合はsed
、特別な場合に問題が発生する可能性があります。おかしい(投稿)で提案されているように、おそらくすでに見たことがあるでしょう-正規表現ではなくhtmlパーサーエンジンを使用するのが最善です。そのような簡単に利用できるパーサーの1つは、テキストのみのブラウザーlynx
(すべてのLinuxで利用可能)です。これにより、ファイル内のすべてのリンクのリストを即座にダンプし、必要なURLをgrepで抽出できます。
lynx -dump -listonly myhtmlfile.html | grep IWANTthisString | sort -u
ただし、これはほとんどの破損したHTMLファイルまたはリンク付きのテキストスニペットでは機能しません。