2013-04-18 5 views
5

निम्न आदेश एक पूर्ण सीएसवी फ़ाइल, में मान ई के साथ दूसरे कॉलम को प्रतिस्थापित कर रहा है, लेकिन अगर मैं केवल पहले 100 पंक्तियों में प्रतिस्थापित करना चाहता हूं तो क्या होगा। csv फ़ाइल की पंक्तियों बरकरार होना चाहिए कीपहली 100 पंक्तियों के लिए सीएसवी फ़ाइल के विशिष्ट कॉलम को प्रतिस्थापित करने के लिए कमांड

awk -F, '{$2="e";}1' OFS=, file 

बाकी ..

उत्तर

7

awk -F, 'NR<101{$2="e";}1' OFS=, file

NR अंतर्निहित वैरिएबल आप देता है या तो रिकॉर्ड की कुल संख्या कार्रवाई की जा रही है या लाइन नंबर उपयोग के आधार पर । उपरोक्त अजीब उदाहरण में, NR चर लाइन संख्या है। जब आप पैटर्न NR<101 डालते हैं तो पहले 100 लाइनों के लिए कार्रवाई सच हो जाएगी। एक बार यह गलत होने पर, यह 1 पर डिफ़ॉल्ट होगा जो शेष पंक्तियों को प्रिंट करेगा।

+1

@ Jaypal..what मैं 'awk -F, 'एन.आर.> 99 && एनआर के रूप में @ user752590 रखो पैटर्न csv फ़ाइल – user752590

+0

की 100-200 पंक्तियों के लिए शर्त ऊपर लागू करने के लिए है, तो <201 {$ 2 = "ई";} 1 'OFS =, फ़ाइल' –

+0

मैं कैसे निर्दिष्ट कर सकता हूं कि मैं केवल कुछ पंक्तियों और केवल कुछ कॉलम में ही जोड़ना चाहता हूं? उदाहरण के लिए मैं पंक्ति 1 में 10 से अधिक कॉलम में ई जोड़ना चाहता हूं? – discipulus

5

इस प्रयास करें:

awk -F, 'NR<=100{$2="e"}1' OFS=, file 
+1

या यहां तक ​​कि एफएनआर का उपयोग तब भी किया जा सकता है जब एकाधिक फाइलें तर्क के रूप में दी जाती हैं। लेकिन परिणाम एक बड़ी धारा होगी। – TrueY

+0

मैं कैसे निर्दिष्ट कर सकता हूं कि मैं केवल कुछ पंक्तियों और केवल कुछ स्तंभों को जोड़ना चाहता हूं? उदाहरण के लिए मैं पंक्ति 1 में 10 से अधिक कॉलम में ई जोड़ना चाहता हूं। – discipulus

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

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