2011-08-31 13 views
6

मैं उन फाइलों में कॉलम पढ़ना चाहता हूं जहां विभाजक : है।perl -a: कॉलम विभाजक कैसे बदलें?

मैं इसे इस तरह की कोशिश की (072 क्योंकि http://www.asciitable.com के अनुसार, बृहदान्त्र के अष्टाधारी प्रतिनिधित्व है):

$ echo "a:b:c" | perl -a -072 -ne 'print "$F[1]\n";' 

मैं इसे b प्रिंट करना चाहते हैं, लेकिन यह काम नहीं करता। perlrun में -F पर

उत्तर

13

देखो:

% echo "a:b:c" | perl -a -F: -ne 'print "$F[1]\n";' 
b 

ध्यान दें कि मूल्य नियमित अभिव्यक्ति के रूप में लिया जाता है, इसलिए कुछ सीमांकक कुछ अतिरिक्त छोड़ने की आवश्यकता हो सकता है: (

% echo "a.b.c" | perl -a -F. -ne 'print "$F[1]\n";' 

% echo "a.b.c" | perl -a -F\\. -ne 'print "$F[1]\n";' 
b 
+1

कूल, धन्यवाद! मैं सोच रहा हूं कि '-0' क्या है, तो ... – Frank

+1

' -0' * रिकॉर्ड विभाजक * सेट करता है (पर्ल की धारणा अगली से एक पंक्ति को अलग करती है) – mob

+1

यह रिकॉर्ड विभाजक है, फ़ील्ड विभाजक नहीं। – tripleee

5

-0रिकॉर्ड निर्दिष्ट करता है रेखा) विभाजक। यह पर्ल कारण था तीन लाइनों प्राप्त करने के लिए: वहाँ उन पंक्तियों में से किसी पर कोई खाली स्थान के है के बाद से

>echo a:b:c | perl -072 -nE"say" 
a: 
b: 
c 

, $F[1] खाली हो अगर -a प्रयोग की जाने वाली होने पर होता।

-F इनपुट फ़ील्ड विभाजक निर्दिष्ट करता है। आप यही चाहते हैं।

perl -F: -lanE'say $F[1];' 

या यदि आप एक पुराने पर्ल के साथ फंस रहे हैं:

perl -F: -lane'print $F[1];' 

कमांड लाइन विकल्पों perlrun में दर्ज कर रहे हैं।

संबंधित मुद्दे