我有两个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
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,?
原文地址:https://www.jb51.cc/bash/386972.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。