2016-08-05 26 views
0

我必須在一個awk腳本中處理多個CSVTXT文件。我在Windows上的cmd文件如下所示:gawk -f script.awk *.csv *.txt > output.file 我想使用此cmd文件,因爲我不想在任何時候只要我想運行該腳本就一直鍵入命令提示符。我想用不同的文件類型執行不同的任務。我已經嘗試了一些腳本文件,如if (match(FILENAME, ".csv")) && (FNR > 1),但它們都沒有工作。我有大約4-5 CSV文件和很多(如1000+)TXT文件,這些都是輸入文件。 CSV文件的內容全部在同一模式中,引號之間的一列。例如:awk處理不同擴展名的文件

"Player" 
"adigabor" 

我想忽略所有的輸入CSV文件的第一行處理時,其中並添加每個記錄的w/o引號到一個數組之後,我想處理TXT文件,這我可以做得很好,我的問題是我無法在一個腳本中使用不同的輸入文件擴展名執行不同的任務。

回答

1

,如果你告訴我們以什麼方式「他們無工作」,所以我們不只是猜測,但在這裏不用反正這將是非常有用的:

match(FILENAME, ".csv")的主要問題是它會匹配csv在文件名的任何地方都有前面的字符。爲了獲得在字面上.csv文件你想:

match(FILENAME,/\.csv$/) 

但你並不需要調用該函數:

FILENAME ~ /\.csv$/ 

所以你的腳本看起來像:

FILENAME ~ /\.csv$/ { 
    if (FNR > 1) { 
     do CSV stuff 
    } 
    next 
} 
{ 
    do TXT stuff 
} 

如果你仍然無法做任何你想做的事情,那麼編輯你的問題以包含樣本輸入文件(每個小的.csv和.txt中至少有一個文件)以及預期的輸出,以及更好地解釋你正在嘗試做什麼。

+1

謝謝埃德,它完美的作品! – sasieightynine

相關問題