एक फ़ाइल में एक अंडरस्कोर के साथ एक डॉट की जगह sed का उपयोग कर


4

मैं sed का उपयोग करके फ़ाइल के आउटपुट को संपादित करने की कोशिश कर रहा था। फ़ाइल की सामग्री हैं

cat /tmp/Group_RM
t.p@k.p
t.m@k.k

मैं आउटपुट पाने की कोशिश कर रहा था:

cat /tmp/Group_RM
t_p@k_p
t_m@k_k

मैंने नीचे दिए गए कमांड की कोशिश की, लेकिन आउटपुट अजीब लग रहा था:

cat /tmp/Group_RM | sed 's/./_/g'

आउटपुट है:

____ ___
_______

sed सभी वर्णों को अंडरस्कोर से बदल रहा है। जब मैंने "_" को "" से बदलने का प्रयास किया, तो sed पूरी तरह से काम करता है।


1
कृपया अपनी पोस्ट पर हस्ताक्षर न करें, और ध्यान दें कि आपको चार स्थानों के साथ कोड को इंडेंट करना चाहिए, या इसे चुनें और दबाएं Ctrl-K या क्लिक करें {} कोड बटन। HTML की कोई आवश्यकता नहीं है <br> रों। धन्यवाद!
slhck

जवाबों:


10

तुम से बचने की जरूरत है . पसंद \.. एक विशेष मेटाचैकर है जो किसी एक पात्र से मेल खाता है

$ sed 's/\./_/g' Group_RM
t_p@k_p
t_m@k_k

एक और बात, cat आवश्यकता नहीं है - sed फ़ाइलों के साथ ही सौदा कर सकते हैं।


4

कारण यह है कि एक डॉट नियमित अभिव्यक्तियों में एक विशेष चरित्र है। यदि आपको वास्तविक डॉट से मतलब है, तो आपको इसे \ _ से बचना होगा।

इसके अलावा, आपको बिल्ली की ज़रूरत नहीं है, आप सीधे फ़ाइल नाम को sed दे सकते हैं। यह काम:

sed 's/\./_/g' myfile.txt
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.