Grep: पूर्ण पंक्ति खोजें और बदलें


13

आदेश

 grep "foo" myfile.txt

मेरी फ़ाइल में सभी मिलान लाइनें प्रिंट करता है।

अब मैं एक और स्ट्रिंग के साथ पूरी लाइन को बदलना चाहता हूं । मैं उसे कैसे कर सकता हूँ?

जवाबों:


13

यदि आप पूरी लाइन के एक विकल्प से मेल खा रहे हैं, तो आप या तो रेक्स के sसाथ sed के कमांड का उपयोग कर सकते हैं , बाकी लाइन को मोप करने के लिए:

sed -i 's/^.*foo.*$/another string/' myfile.txt

या cएक बार में मिलान लाइन को बदलने के लिए कमांड का उपयोग करें :

sed -i '/foo/ { c \
another string
}' myfile.txt

यदि आप प्रॉम्प्ट पर मल्टीलाइन कमांड नहीं लिखना चाहते हैं, तो आप इसे स्क्रिप्ट में रख सकते हैं:

$ cat foo.sed
/foo/ { c \
another string
}

$ sed -i -f foo.sed myfile.txt

धन्यवाद! जब मैं दूसरे विकल्प का उपयोग करता हूँ तो मुझे मिलता है: sed: -e अभिव्यक्ति # 1, char 0: बेजोड़ `{'
दबाना

पहली पंक्ति के अंत में, आपको \ _ टाइप करना होगा और फिर रिटर्न मारना होगा - यह महत्वपूर्ण है कि \ _ उस पहली नई रेखा से बच जाए। फिर, सुनिश्चित करें कि }'एक अलग लाइन पर है another string: प्रतिस्थापन उस दूसरी पंक्ति पर सब कुछ है , }अगर आप इसे वहां डालते हैं।
बेकार

-1

आप उपयोग कर सकते हैं inplace के functionnality sed :

sed -i -e 's/foo/bar/' myfile.txt

यह केवल पूरी रेखा के fooसाथ हर जगह लेगा bar..
जाहिद
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.