Shell-Script

將 N 個 csv 文件連接到一個 csv 文件

  • June 11, 2021

我需要建構一個 shell 腳本,它將所有可用的 CSV 文件連接成一個。所有這些 CSV 文件都具有相似的結構(即相同的標題和列數),並且這些文件具有共同的前綴GFP

例如:有一天我可能有以下文件,

GFP_20210609.csv
GFP_20210610.csv

或者有時我可能有很多這樣的文件。這裡的問題是我不確定一天會出現多少這樣的文件(假設每天不超過 5 個 CSV 文件)。

我是 shell 腳本的初學者。任何幫助將不勝感激。

sed 1d GFP_20210610.csv > GFP_20210610_NO_HEADER.csv
cat GFP_20210609.csv GFP_20210610_NO_HEADER.csv > GFP_FINAL.csv

嘗試awk

awk 'NR==1||FNR>1' GFP*.csv > output.csv

這將列印從第二行開始的每個文件的所有行(FNR>1意味著每個文件的行計數器大於一個)以抑制重複的標題,但一定要列印遇到的第一行(NR==1),這是第一行的標題行文件。

然後將輸出重定向到文件output.csv

如果在規則塊 ( ) 之外發現的條件為真,則該語法利用了awk將列印目前行的{ ...}事實。在這種情況下,我們可以完全省略規則塊,因為我們實際上並不想編輯,而只想過濾輸入文件。

引用自:https://unix.stackexchange.com/questions/653656