Sed या awk में कई लाइनों को बदलना [बंद]


9

मैं एक smb फ़ाइल में 5 लाइनों को बदलने के लिए sed या awk का उपयोग करने की कोशिश कर रहा हूं, लेकिन मुझे अभी यह नहीं पता है कि नए सिरे से कैसे निपटना है।


6
f बेशक, sed और awk ऐसा कर सकते हैं, लेकिन मुझे यह समझने में थोड़ी परेशानी हो रही है कि आपका सवाल क्या है। क्या वास्तव में आपको परेशानी हो रही है? नई लाइनें डालने? उन्हें बदल रहा है?
frabjous

जवाबों:


19

इस पर सेड काफी खराब है, क्योंकि यह एक बार में एक लाइन को संचालित करता है। केवल सभ्य तकनीक मैंने कभी यह करने के लिए देखा है है इस एक है, जो sed की पकड़ बफर में पूरी फ़ाइल भंडारण और फिर एक ही बार में यह सब पर काम शामिल है:

sed -n '1h;1!H;${g;s/search/replace/;p;}'

यदि आप कर सकते हैं, तो इसे पूरा करने के लिए पर्ल का उपयोग करना बहुत आसान है:

perl -0pe 's/search/replace/'

search\nनई सूचियों का प्रतिनिधित्व करने के लिए s हो सकते हैं


1
मल्टीलाइनर के लिए +1 sed
लेज़र

क्या आप समझा सकते हैं कि कमांड लाइन पर्ल के लिए क्या करती है?
माइकल

1
@ मिचेल -0रिकॉर्ड विभाजक को अशक्त करने के लिए सेट करता है, इसलिए पूरी फाइल को लाइन-बाय-लाइन के बजाय एक बार में पढ़ा जाएगा। -pयह प्रतिस्थापन के बाद परिणाम प्रिंट करता है। -eक्या इसे चलाने के लिए अभिव्यक्ति के रूप में अगला तर्क है, और s/search/replace/क्या वह अभिव्यक्ति है
माइकल Mrozek
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.