以下のようにcURLを使用してWebサイトからURLを抽出しています。

curl www.somesite.com | grep "<a href=.*title=" > new.txt 

new.txtファイルは次のとおりです。

<a href="http://website1.com" title="something"> <a href="http://website1.com" information="something" title="something"> <a href="http://website2.com" title="some_other_thing"> <a href="http://website2.com" information="something" title="something"> <a href="http://websitenotneeded.com" title="something NOTNEEDED"> 

ただし、以下の情報のみを抽出する必要があります。

<a href="http://website1.com" title="something"> <a href="http://website2.com" information="something" title="something"> 

<a hrefを無視しようとしています>情報が含まれ、タイトルが不要で終わる。

grepステートメントを変更するにはどうすればよいですか?

コメント

  • 出力はあなたですか'ここに正しく表示されていますか?それを説明するテキストは、この例では'意味がありません。
  • 'お探しですかcurl www.somesite.com | grep "<a href=.*title=" | grep -v NOTNEEDED > new.txt
  • @terdon、まさにそれが私が探していたものでした。投稿していただければ、回答として受け入れることができます。
  • Ramesh、'基本的に@slm 'の答え。受け入れられるように編集したばかりです。
  • そうそう、パイプがこれほど強力だとは思いませんでした。私はそれを答えとして受け入れました。ありがとう!

回答

私はあなたの例と説明に完全には従っていませんが、あなたのように聞こえます欲しいのはこれです:

$ grep -v "<a href=.*title=.*NOTNEEDED" sample.txt <a href="http://website1.com" title="something"> <a href="http://website1.com" information="something" title="something"> <a href="http://website2.com" title="some_other_thing"> <a href="http://website2.com" information="something" title="something"> 

例として:

$ curl www.example.com | grep -v "<a href=.*title=" | grep -v NOTNEEDED > new.txt 

コメント

  • < a hrefセクションにクラスがあります。基本的に、出力には必要ありません。

回答

grep のマニュアルページには次のように書かれています。

-v, --invert-match Invert the sense of matching, to select non-matching lines. (-v is specified by POSIX .) 

複数の反転に正規表現を使用できます:

grep -v "red\|green\|blue" 

または

grep -v red | grep -v green | grep -v blue 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です