2012-03-23 16 views
7

जोड़ने मैं निम्नलिखित file.csvawk गणना संख्या और उसके अनुसार

111111 | 111111 | 22222 | 44444 | 4445454 | 67554333 | 

मैं का उपयोग कर खेतों की संख्या की गणना कर सकते हैं निम्नलिखित है

awk -F '|' '{print NF}' file.csv 
मेरी डेटाबेस स्कीमा में

मैं 33 क्षेत्रों है हालांकि, जब मैं फ़ाइल आयात करता हूं तो मेरी सीएसवी फ़ाइल में से कुछ पंक्तियों में 33 से कम फ़ील्ड हैं, यह मिस मैच के बारे में शिकायत करता है।

अजीब का उपयोग करके मैं नल फ़ील्ड स्प्रेडर को जोड़ने के बारे में कैसे जा सकता हूं | 33 पंक्तियों को पूरा करने के लिए

आपकी सहायता की अत्यधिक सराहना की जाती है।

आप

उत्तर

6

पंक्ति के अंत में रिक्त फ़ील्ड को जोड़ने के लिए धन्यवाद:

awk -F'|' -v OFS='|' '{for(i=NF+1;i<=33;i++)$i=""}1' file.csv 
+0

बहुत अच्छी तरह से काम किया, धन्यवाद – Deano

+1

एक सरल संस्करण हो सकता है 'awk -F' | ' -v OFS = '|' 'एनएफ <33 {$ 33 = ""} एनएफ> = 33'' (' एनएफ + 1' और '33' के बीच फ़ील्ड सेट करने की आवश्यकता नहीं है, और 'एनएफ> = 33' लाइन प्रिंट करता है)। – jfg956

+0

@jfgagne अच्छा विचार। ''एनएफ <33 {$ 33 =" "} 1'' – kev

2

यह आप के लिए काम कर सकते हैं:

sed ':a;s/|/&/33;t;s/$/|/;ta' file.csv 
+0

यह भी काम करता है! धन्यवाद – Deano