加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-15 18:59:12 所属栏目:安全 来源:网络整理
导读:我有两个csv文件,我想使用键值(城市列)加入它们. 一个csv文件,d01.csv有这种形式, Barcelona,19.5,29.5Tarragona,20.4,31.5 Girona,17.2,32.5Lleida,16.5,33.5 Vic,17.5,31.4 另一个是d02.csv,具有下一个结构, City,Data,TMax,TMinBarcelona,20140916,19.9,2
我有两个csv文件,我想使用键值(城市列)加入它们.

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

Barcelona,19.5,29.5
Tarragona,20.4,31.5 
Girona,17.2,32.5
Lleida,16.5,33.5 
Vic,17.5,31.4

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

City,Data,TMax,TMin
Barcelona,20140916,19.9,28.5
Tarragona,21.4,30.5  
Lleida,32.5 
Tortosa,20.5,30.4

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

City,Tmin,Tmax,Date,Tmin1,Tmax1
Barcelona,29.5,31.5,30.5
Girona,32.5,33.5,30.4

我试着这样做

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

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

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

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

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)
Barcelona,28.5
Girona,?,?
Lleida,30.5  
Tortosa,30.4
Vic,31.4,?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读