簡體   English   中英

awk處理具有不同擴展名的文件

[英]awk processing files with different extensions

我必須在一個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文件的內容全部在同一架構中,引號之間是一列。 例:

"Player"
"adigabor"

我想在處理它們時忽略所有輸入CSV文件的第一行,並將不帶引號的每條記錄添加到數組中,然后我想處理TXT文件,我可以做的很好,我的問題是我無法在一個腳本中執行具有不同輸入文件擴展名的不同任務。

如果您以什么方式告訴我們“他們都沒有工作”,那將非常有用,因此我們不僅在猜測,而且無論如何都可以:

match(FILENAME, ".csv")的主要問題是它將匹配csv ,並在文件名中的任何字符之前加上任何char。 要獲取以.csv 結尾的文件,您需要:

match(FILENAME,/\.csv$/)

但您無需為此調用函數:

FILENAME ~ /\.csv$/

因此,您的腳本應如下所示:

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

如果您仍然無法做任何事情,請編輯問題以包括示例輸入文件(每個小.csv和.txt文件中的至少一個)和預期輸出,以及對嘗試內容的更好解釋去做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM