कई लाइनों पर पर्ल रेगेक्स का उपयोग करना


1

मैं इस की सभी घटनाओं को एक फाइल में बदलना चाहता हूं:

ab
ba

इसके साथ:

a a

मैंने स्पष्ट करने की कोशिश की:

$ perl -i -p -e 's/ab\nba/a a/' file.txt

कोई सफलता नहीं के साथ। यह कैसे किया जाता है?

मुझे कोई भी प्रश्न नहीं मिल रहा है जो इस प्रश्न को ठीक से स्पष्ट करता है।

जवाबों:


1

किसी अन्य विकल्प के बिना, -pइनपुट लाइन को लाइन से संसाधित करता है। कोई भी लाइन में कुछ भी नहीं हो सकता है \n। आपको रिकॉर्ड विभाजक बदलना होगा:

perl -i~ -0pe 's/ab\nba/a a/' file.txt
  • -i~"जगह में" फ़ाइल को संशोधित करेगा, पीछे एक बैकअप छोड़ (नाम file.txt~)
  • -0चरित्र \0को इनपुट रिकॉर्ड सेपरेटर बनाता है । महत्वपूर्ण बात यह है कि इसे बदलने के लिए स्ट्रिंग में नहीं होता है, इसलिए यह कभी भी इसका एक हिस्सा नहीं पढ़ेगा।
  • -p फ़ाइल रिकॉर्ड को रिकॉर्ड द्वारा पढ़ता है, और प्रत्येक पढ़ने के बाद, यह कोड चलाता है और डिफ़ॉल्ट चर प्रिंट करता है $_
  • -e बस कोड का परिचय देता है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.