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.