パターンを無視するgrep


12

以下のように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">

私はそれらに情報があり、タイトルがNOTNEEDEDで終わるものを無視しようとして<a hrefいます。

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


ここに表示されている出力は正しいですか?これを説明するテキストは、この例では意味がありません。
slm

1
探していませんcurl www.somesite.com | grep "<a href=.*title=" | grep -v NOTNEEDED > new.txtか?
テルドン

@terdon、まさにそれが私が探していたものでした。あなたがそれを投稿するならば、私はそれを答えとして受け入れることができます。
ラメシュ14

Ramesh、それは基本的に@slmの答えです。あなたがそれを受け入れることができるように、私はそれを編集しました。
テルドン

ええ、パイプがこんなに強力だとは思いませんでした。私はそれを答えとして受け入れました。ありがとう!
ラメシュ14

回答:


16

私はあなたの例と説明を完全に追っていませんが、あなたが望むものはこれです:

$ 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セクションにクラスがあります。基本的に、私はそれを出力に入れたくありません。
ラメシュ14

9

グレップの manページは言います:

-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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.