Shell-Script
將 N 個 csv 文件連接到一個 csv 文件
我需要建構一個 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
將列印目前行的{ ...}
事實。在這種情況下,我們可以完全省略規則塊,因為我們實際上並不想編輯,而只想過濾輸入文件。