2015-01-01 8 views
5

नहीं है मुझे आश्चर्य है कि मुझे SO पर इस तरह का कोई प्रश्न नहीं मिल रहा है।sed- उस पंक्ति को हटाएं जिसमें पैटर्न

मैं उन सभी पंक्तियों को हटाने के लिए sed का उपयोग कैसे करूं जिनमें विशिष्ट पैटर्न न हो।

cat kitty dog 

उत्तर

8

हो जाएगा ताकि:

cat kitty dog 
giraffe panda 
lion tiger 

मैं एक एसईडी आदेश है कि, जब कहा जाता है, सभी लाइनों है कि शब्द cat शामिल नहीं है को नष्ट करेगा हैं:

उदाहरण के लिए, मैं इस फ़ाइल है कार्य करें:

sed -i '/cat/!d' file1.txt 

एक सटीक मिलान के लिए मजबूर करने के लिए:

+०१२३५१६४१०६
sed -i '/\<cat\>/!d' file1.txt 

या

sed -i '/\bcat\b/!d' file1.txt 

जहां \<\> & \b\b बल एक सटीक मिलान।

+1

इसके अलावा, 'sed -n'/cat/p'' –

+0

उस इनपुट पर आज़माएं जिसमें 'स्कैटर' शब्द शामिल है। क्या वांछित व्यवहार है? –

+1

@EdMorton: प्रतिक्रिया के लिए धन्यवाद। – Amit

4

तो आपकी आवश्यकता "मुझे स्ट्रिंग cat युक्त सभी लाइनें देगी"। तो क्यों नहीं बस grep का उपयोग कर:

grep cat file 
1

(के रूप में केंट द्वारा बताया) का उपयोग शब्द 'बिल्ली' containg सभी लाइनों को देखने के कर सकते हैं:

grep cat file 

सभी पंक्तियों को देखने के लिए शब्द 'cat' को containg नहीं:

grep -v cat file 
संबंधित मुद्दे