argv

2008-11-26 14 views
18

का उपयोग करके AWK के साथ एक टेक्स्ट फ़ाइल के एनएच कॉलम को कैसे मुद्रित करें मान लीजिए मेरे पास कॉलम में व्हाइटस्पेस द्वारा अलग किए गए डेटा के साथ एक टेक्स्ट फ़ाइल है। मैं एक शेल स्क्रिप्ट लिखना चाहता हूं जो एक फ़ाइल नाम इनपुट और एक संख्या एन के रूप में लेता है और केवल उस कॉलम को प्रिंट करता है। अजीब के साथ मैं निम्नलिखित कर सकता हूं:argv

awk < /tmp/in '{print $2}' > /tmp/out 

यह कोड दूसरे कॉलम को प्रिंट करता है।

लेकिन एक शेल स्क्रिप्ट में एक को कैसे लपेटें ताकि तर्क में मनमाना कॉलम पारित किया जा सके?

+3

यह पता चला है कि इस समस्या को काटकर अच्छी तरह से हल किया जाता है। अधिक जानकारी के लिए "मैन कट" देखें। – speciousfool

उत्तर

27
awk -v x=2 '{print $x}'

या एक खोल स्क्रिप्ट में:

 
#!/bin/sh 
num=$1 
awk < /tmp/in -v x=$num '{print $x}' > /tmp/out 
+0

संपादन जोनाथन के लिए धन्यवाद ... – Ray

5
awk '{print $'$myvar'}' </tmp/in> /tmp/out 

कहाँ $ myVar अपने चर स्तंभ (एक पूर्णांक) है। स्क्रिप्ट इंजेक्शन के लिए देखें!

+0

या: awk "{print \ $$ myvar}" ... लाभ कम उद्धरण है। –

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