kalıpları yoksaymak için grep


12

URL'leri aşağıdaki gibi cURL kullanarak bir web sitesinden çıkarıyorum.

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

Yeni.txt dosyam aşağıdaki gibidir.

<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">

Ancak, sadece aşağıdaki bilgileri almam gerekiyor.

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

Ben görmezden çalışıyorum <a hrefsahip olduğu bilgi onlarda etmeyen ve başlık ucu ile NOTNEEDED .

Grep ifademi nasıl değiştirebilirim?


Burada gösterdiğiniz çıktı doğru mu? Bunu açıklayan metin bu örnekle birlikte bir anlam ifade etmiyor.
slm

1
Aradığınız değil mi curl www.somesite.com | grep "<a href=.*title=" | grep -v NOTNEEDED > new.txt?
terdon

@terdon, tam da aradığım şey buydu. Gönderirseniz cevap olarak kabul edebilirim.
Ramesh

Ramesh, temelde slm'nin cevabı. Sadece düzenledim, böylece kabul edebilirsin.
terdon

oh evet, borunun bu kadar güçlü olduğunu fark etmedim. Cevap olarak kabul ettim. Teşekkürler!
Ramesh

Yanıtlar:


17

Ben tam olarak örnek + açıklamasını takip etmiyorum ama ne istediğiniz gibi geliyor:

$ 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">

Yani örneğiniz için:

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

<A href bölümünde bir sınıfım var. Temel olarak, benim çıkışımda bunu istemiyorum.
Ramesh

9

Grep man sayfanın mesajı:

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

Birden çok ters çevirme için normal ifadeleri kullanabilirsiniz:

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

veya

grep -v red | grep -v green | grep -v blue
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.