2014-07-15 60 views
0

我想創建每個城市結合幾個CSV行和列新的csv文件,一列有城市的名字,所有的CSV文件重複...結合CSV線在bash

對於例如,

我有日期,年月日,20140713.csv,20140714.csv,20140715.csv的名稱文件...

它們具有相同的結構,行數和列數相同,爲例如,20140713.csv ...

1. City, Data, TMinreal, TMaxreal, TMinext, TMaxext, DiffTMin, DiffTMax 
2. Milano,20140714,19.0,28.8,18,27,1,1.8 
3. Rome,20140714,18.1,29.3,14,29,4.1,0.3 
4. Pisa,20140714,10.8,27.5,8,29,2.8,-1.5 
5. Venecia,20140714,21.1,29.1,16,27,5.1,2.1 

我想結合所有這些csv文件...並獲取具有城市名稱的csv文件,如Milano.csv,並在裏面存儲關於存儲在所有csv中的城市信息。

例如,如果我結合20140713.csv,20140714.csv,20140715.csv,爲Milano.csv

1. Milano,20140713,19.0,28.8,18,26,1,2.8 

2. Milano,20140714,19.0,28.8,20,27,-1,1.8 

3. Milano,20140715,21.0,26.8,19,27,2,-0.2 

什麼想法?謝謝

回答

0

你可以有這樣的bash腳本:

#!/bin/bash 

for FILE; do 
    { 
     read ## Skip header 
     while IFS=, read -r A B; do 
      echo "$A,$B" >> "$A".csv 
     done 
    } < "$FILE" 
done 

然後爲運行:

bash script.sh file1.csv file2.csv ... 
+0

謝謝Konsolebox,它運行也很好。一個問題,你可以解釋我行, –

+0

而IFS =,讀-r A B;做 –

+0

A是第一列嗎?一個B其他列?謝謝 –

2

未經檢驗的,但這應該工作:

awk -F, 'FNR==1{next} {file = $1".csv"; print > file}' 20*.csv 
+0

工作得很好!謝謝,非常有用 –