आप पर्ल वन-लाइनर्स का बहुत उपयोग कर सकते हैं जैसे कि आप sed के साथ करते हैं, पूर्ण पर्ल रेगुलर एक्सप्रेशन सपोर्ट का लाभ उठाते हैं (जो कि sed के साथ बहुत अधिक शक्तिशाली है)। * निक्स प्लेटफार्मों में भी बहुत कम भिन्नता है - पर्ल आम तौर पर पर्ल है। तो आप इस बारे में चिंता करना बंद कर सकते हैं कि आपके सिस्टम के सीड के संस्करण को कैसे बनाया जाए जो आप चाहते हैं।
इस मामले में, आप कर सकते हैं
perl -pe 's/(regex)/\n$1/'
-pe
पर्ल को "निष्पादित और प्रिंट करें" लूप में रखा जाता है, जो कि ऑपरेशन के सामान्य मोड के समान है।
'
शेल के हस्तक्षेप नहीं करेगा तो सब कुछ उद्धरण
()
regex के आसपास एक समूह संचालक है। $1
प्रतिस्थापन के दाईं ओर जो कुछ भी इन पार्न्स के अंदर मिलान किया गया था उसे प्रिंट करता है।
अंत में, \n
एक नई पंक्ति है।
भले ही आप एक समूह संचालक के रूप में कोष्ठक का उपयोग कर रहे हों, आपको किसी भी ऐसे कोष्ठक से बचना होगा, जिसे आप मिलान करने का प्रयास कर रहे हैं। तो आपके द्वारा ऊपर दी गई सूची से मेल खाने वाला रेगेक्स कुछ ऐसा होगा
\(\d\d\d\)\d\d\d-\d\d\d\d
\(
या \)
शाब्दिक शब्द मेल करता है, और \d
एक अंक मेल खाता है।
बेहतर:
\(\d{3}\)\d{3}-\d{4}
मुझे लगता है कि आप समझ सकते हैं कि ब्रेसिज़ में नंबर क्या कर रहे हैं।
इसके अतिरिक्त, आप अपने regex के लिए / के अलावा अन्य सीमांकक का उपयोग कर सकते हैं। इसलिए यदि आपको मिलान करने की आवश्यकता है / तो आपको इससे बचने की आवश्यकता नहीं होगी। मेरे जवाब की शुरुआत में या तो नीचे रेगेक्स के बराबर है। सिद्धांत रूप में आप मानक / के लिए किसी भी वर्ण को प्रतिस्थापित कर सकते हैं ।
perl -pe 's#(regex)#\n$1#'
perl -pe 's{(regex)}{\n$1}'
एक अंतिम विचार।
इसी तरह -ne
के -pe
कृत्यों के बजाय उपयोग करना , लेकिन अंत में स्वचालित रूप से प्रिंट नहीं होता है। यदि आप स्वयं प्रिंट करना चाहते हैं तो यह आसान हो सकता है। जैसे, यहाँ एक grep-alike है ( m/foobar/
एक रेगेक्स मैच है):
perl -ne 'if (m/foobar/) {print}'
यदि आप नए-नए कष्टों से जूझ रहे हैं, और आप चाहते हैं कि यह आपके लिए जादुई रूप से संभाला जाए, तो -l
। ओपी के लिए उपयोगी नहीं है, जो नई कहानियों के साथ काम कर रहा था, हालांकि।
बोनस टिप - यदि आपके पास पीसीआर पैकेज स्थापित है, तो यह आता है pcregrep
, जिसमें पूर्ण पर्ल-संगत रेगेक्स का उपयोग किया जाता है।
sed '/regex/G'