2012-04-03 13 views
17

मैं एक CSV फ़ाइल को एक तालिका प्रारूप में परिवर्तित कर रहा हूं, और मैंने एक एडब्ल्यूके स्क्रिप्ट लिखी और इसे my.awk के रूप में सहेजा। यहां मेरी स्क्रिप्ट है:एक .awk फ़ाइल कैसे चलाएं?

#AWK for test 
awk -F , ' 
    BEGIN { 
     aa = 0; 
    } 
    { 
     hdng = "fname,lname,salary,city"; 
     l1 = length($1); 
     l13 = length($13); 
     if ((l1 > 2) && (l13 == 0)) { 
      fname = substr($1, 2, 1); 
      l1 = length($3) - 4; 
      lname = substr($3, l1, 4); 
      processor = substr($1, 2); 
      #printf("%s,%s,%s,%s\n", fname, lname, salary, $0); 
     } 

     if ($0 ~ ",,,,") 
      aa++ 
     else if ($0 ~ ",fname") 
      printf("%s\n", hdng); 
     else if ((l1 > 2) && (l13 == 0)) { 
      a++; 
     } 
     else { 
      perf = $11; 
      if (perf ~/^[0-9\.\" ]+$/) 
       type = "num" 
      else 
       type = "char"; 
      if (type == "num") 
       printf("Mr%s,%s,%s,%s,,N,N,,\n", $0,fname,lname, city); 
     } 
    } 
    END { 
    } ' <life.csv> life_out.csv* 

मैं इस स्क्रिप्ट को यूनिक्स सर्वर पर कैसे चला सकता हूं? मैं इस आदेश का उपयोग करके इस my.awk फ़ाइल को चलाने की कोशिश की:

awk -f my.awk life.csv 

उत्तर

22

फ़ाइल आप दे एक खोल स्क्रिप्ट, न कि एक awk कार्यक्रम है। तो, sh my.awk आज़माएं।

आप awk -f my.awk life.csv > life_out.cs उपयोग करना चाहते हैं, तो awk -F , ' हटाने और फ़ाइल से अंतिम पंक्ति और BEGIN में FS="," जोड़ें।

+0

कर सकते हैं आप एक 'awk' खोल स्क्रिप्ट में' पूंछ -f' की तरह कुछ से पाइप उत्पादन? तो मैं एक लॉग फ़ाइल पूंछ कर सकता हूं तो अजीब के साथ कुछ प्रसंस्करण कर सकते हैं फिर इसे स्क्रीन पर आउटपुट कर सकते हैं? –

+0

असल में ऐसा लगता है कि मैं नीचे देख रहा हूं जो मैं चाहता हूं। –

10

फ़ाइल को फ़ाइल में BEGIN....END{} से रखें और इसे my.awk जैसे नाम दें।

और फिर यह नीचे की तरह निष्पादित करें:

awk -f my.awk life.csv >output.txt 

इसके अलावा, मैं , के रूप में एक क्षेत्र विभाजक देखते हैं। आप यदि आप अपनी AWK स्क्रिप्ट की पहली पंक्ति यह आसान है पर #!/bin/awk -f डाल के रूप FS=","

11

.awk फ़ाइल के ब्लॉक शुरू में है कि जोड़ सकते हैं। इसके अलावा Vim जैसे संपादकों और ... फ़ाइल को एडब्ल्यूके स्क्रिप्ट के रूप में पहचाना जाएगा और आप रंगीन कर सकते हैं। :)

#!/bin/awk -f 
BEGIN {} # Begin section 
{}  # Loop section 
END{}  # End section 

तो फिर तुम इस तरह से अपनी AWK स्क्रिप्ट कॉल कर सकते हैं:

`$ echo "something" | ./awk-script` 
संबंधित मुद्दे