2010-12-05 10 views
7

से फ़ाइल पर कार्य करने के लिए एक फ़ाइल में, xyz.txt कहें कि मैं किसी भी संख्या के पैटर्न को प्रतिस्थापित करना चाहता हूं उदाहरण के बाद: 1., 2., 10., 11। आदि .. एक सफेद जगह के साथ। उपर्युक्त करने के लिए फ़ाइल पर कार्य करने के लिए कमांड लाइन पर एक perl कमांड कैसे लिखें, रेगेक्स का उपयोग करने के लिए क्या होना चाहिए?पर्ल रेगेक्स कमांड लाइन

कृपया सहायता करें।

उत्तर

4

उत्तर (परीक्षण नहीं):

perl -ipe "s/\d+\./ /g" xyz.txt 
+10

मैं व्यक्तिगत रूप से टाइप करने के लिए 'पर्ल -pie' क्योंकि तब यह एक शब्द मंत्र की तरह है, लेकिन यह कोई फर्क नहीं पड़ता। –

19

यह एक पर्ल oneliner होना है?

perl -i -pe 's/\d+\./ /g' <fileName> 

पर्ल कमांड लाइन विकल्प: -i क्या इनपुट फ़ाइल के लिए होता निर्दिष्ट करने के लिए प्रयोग किया जाता है। यदि आप इसे फ़ाइल एक्सटेंशन नहीं देते हैं, तो मूल फ़ाइल खो जाती है और इसे पर्ल मंग आउटपुट द्वारा प्रतिस्थापित किया जाता है।

perl -i.bak -pe 's/\d+\./ /g' <fileName> 

मूल फ़ाइल एक .bak प्रत्यय और <fileName> ही अपने उत्पादन होते हैं साथ संग्रहीत किया जाएगा: उदाहरण के लिए, अगर मैं इस किया था।

-p एक प्रिंट पाश है कि लग रहा है कुछ हद तक इस तरह में अपने पर्ल कार्यक्रम को संलग्न करने का अर्थ है:

while ($_ = <>) { 
    <Your Perl one liner> 
    print "$_"; 
} 

यह कुछ हद तक एक सरल व्याख्या क्या हो रहा है है। आप कमांड लाइन से perldoc perlrun कर वास्तविक पर्ल लूप देख सकते हैं। मुख्य विचार यह है कि आप सिर्फ sed या awk की तरह एक फ़ाइल की प्रत्येक पंक्ति पर कार्य करने की अनुमति देता है।

-e में बस आपके पर्ल कमांड शामिल हैं।

तुम भी फ़ाइल पुनर्निर्देशन भी कर सकते हैं:

perl -pe 's/\d+\./ /g' <xyz.txt> xyz.txt.out 
+0

+1 मैं का उपयोग बहुत ही उपयोगी उनका कहना है, -p पीछे यांत्रिकी स्पष्टीकरण के लिए, और पुनर्निर्देशन विकल्प दिखाने के लिए के लिए, साथ-साथ सभी सही ढंग से सवाल का जवाब देने के लिए। – Olfan

+0

उपयोग दोहरे उद्धरण चिह्नों "" regexp स्ट्रिंग संलग्न करने की है, तो आप विंडोज सीएमडी में सक्रिय पर्ल का उपयोग कर रहे हैं, या यह काम नहीं करेगा। बस मेरी विंडोज 10 कमांड लाइन में परीक्षण किया। –

2

दोनों

perl -ipe "s/\d+\./ /g" xyz.txt 

और

perl -pie 

अपने सिस्टम पर निष्पादित नहीं कर सकते हैं।

मैं निम्नलिखित आदेश का उपयोग करें:

perl -i -pe 
संबंधित मुद्दे