bash – 使用键值连接两个csv文件

前端之家收集整理的这篇文章主要介绍了bash – 使用键值连接两个csv文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有两个csv文件,我想使用键值(城市列)加入它们.

一个csv文件,d01.csv有这种形式,

  1. Barcelona,19.5,29.5
  2. Tarragona,20.4,31.5
  3. Girona,17.2,32.5
  4. Lleida,16.5,33.5
  5. Vic,17.5,31.4

另一个是d02.csv,具有下一个结构,

  1. City,Data,TMax,TMin
  2. Barcelona,20140916,19.9,28.5
  3. Tarragona,21.4,30.5
  4. Lleida,32.5
  5. Tortosa,20.5,30.4

我需要一个新的csv文件,其中一列城市出现在2个csv文件中.

  1. City,Tmin,Tmax,Date,Tmin1,Tmax1
  2. Barcelona,29.5,31.5,30.5
  3. Girona,32.5,33.5,30.4

我试着这样做

  1. join -j 2 -t ',' d01.csv d02.csv | awk -F "," '{print $1,$2,$3,$4,$5} > d03.csv

但它不完整……我怎样才能订购关键值?

以下是如何在bash中使用join:
  1. {
  2. echo "City,Tmax1"
  3. join -t,<(sort d01.csv) <(sed 1d d02.csv | sort)
  4. } > d03.csv
  5. cat d03.csv
  1. City,28.5
  2. Lleida,32.5
  3. Tarragona,30.5

请注意,join仅输出两个文件中密钥存在的记录.要获取所有这些,请指定您希望从两个文件中丢失记录,指定所需的字段,并为缺少的字段提供默认值:

  1. join -t,-a1 -a2 -o 0,1.2,1.3,2.2,2.3,2.4 -e '?' <(sort d01.csv) <(sed 1d d02.csv | sort)
  1. Barcelona,28.5
  2. Girona,?,?
  3. Lleida,30.5
  4. Tortosa,30.4
  5. Vic,31.4,?

猜你在找的Bash相关文章