我正在尝试制作一个shell脚本,该脚本将以以下方式组合两个csv文件:
我有两个csv文件,分别是f1.csv和f2.csv。 f1.csv的格式为:
startId, endId, roomNum
f2.csv的格式如下:
startId, endId, teacherId
我想将这两种格式合并为一个csv文件:
startId, endId, roomNum, teacherId.
用在Linux下运行的Shell脚本完成此操作的最佳方法是什么?
最佳答案
尝试:
join -t, -1 1 -2 1 -o 1.2 1.3 1.4 2.4 <(awk -F, '{print $1":"$2","$0}' f1.csv | sort) <(awk -F, '{print $1":"$2","$0}' f2.csv | sort)
这个怎么运作:
1)我首先通过将两个文件的startId和endId合并到startId:endId中来创建一个复合键列。
awk -F, '{print $1":"$2","$0}' f1.csv
awk -F, '{print $1":"$2","$0}' f2.csv
2)我对两个输出进行排序:
awk -F, '{print $1":"$2","$0}' f1.csv | sort
awk -F, '{print $1":"$2","$0}' f2.csv | sort
3)然后,我使用
join
命令加入我的复合键(在第一列中),并仅输出所需的列。关于linux - 如何使用shell脚本连接2个csv文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6301059/