पैटर्न को अनदेखा करने के लिए grep


12

मैं नीचे दिए गए cURL का उपयोग करके वेबसाइट से URL निकाल रहा हूं।

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

मेरी नई। 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जिनमें जानकारी है और जिसका शीर्षक NOTNEEDED है

मैं अपने grep स्टेटमेंट को कैसे संशोधित कर सकता हूं?


क्या आपके द्वारा यहां दिखाया जा रहा आउटपुट सही है? इसका वर्णन करने वाले पाठ का इस उदाहरण के साथ कोई मतलब नहीं है।
स्लम

1
क्या तुम नहीं खोज रहे हो curl www.somesite.com | grep "<a href=.*title=" | grep -v NOTNEEDED > new.txt?
terdon

@terdon, वास्तव में वही था जिसकी मुझे तलाश थी। यदि आप इसे पोस्ट करते हैं तो मैं इसे एक उत्तर के रूप में स्वीकार कर सकता हूं।
रमेश

रमेश, यह मूल रूप से @ एसएलएम का जवाब है। मैंने अभी इसे संपादित किया है ताकि आप इसे स्वीकार कर सकें।
terdon

ओह, मुझे नहीं पता था कि यह शक्तिशाली पाइप था। मैंने इसे एक उत्तर के रूप में स्वीकार किया है। धन्यवाद!
रमेश

जवाबों:


17

मैं आपके उदाहरण + वर्णन का पूरी तरह से पालन नहीं कर रहा हूं, लेकिन लगता है कि आप जो चाहते हैं वह यह है:

$ 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 अनुभाग। मूल रूप से, मैं अपने आउटपुट में ऐसा नहीं चाहता।
रमेश

9

ग्रेप आदमी पेज का कहना है:

-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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.