Linux 将基于列值的数据子集为另一个数据的列值,并在Bash中合并
我有两个数据,我想根据另一个data2的列值将data1子集并合并,我的data1如下所示:Linux 将基于列值的数据子集为另一个数据的列值,并在Bash中合并,linux,bash,dataframe,join,Linux,Bash,Dataframe,Join,我有两个数据,我想根据另一个data2的列值将data1子集并合并,我的data1如下所示: ID address phone 123 .... ..... 456 .... ..... 789 .... ..... 101 .... ..... ID City Zipcode if_travel 123 .... .... .... 456 .... .... .... 数据2看
ID address phone
123 .... .....
456 .... .....
789 .... .....
101 .... .....
ID City Zipcode if_travel
123 .... .... ....
456 .... .... ....
数据2看起来像:
ID address phone
123 .... .....
456 .... .....
789 .... .....
101 .... .....
ID City Zipcode if_travel
123 .... .... ....
456 .... .... ....
我希望获得如下数据:
ID address phone City Zipcode if_travel
123 .... ..... .... .... ....
456 .... ..... .... .... ....
789 .... ..... NA NA NA
101 .... ..... NA NA NA
这个过程在python中似乎类似于左join,但是在bash命令中有没有办法完成同样的过程?谢谢 有很多方法可以做到这一点;这里有一个:
join -o '0,1.2,1.3,2.2,2.3,2.4' -a1 -e 'NA' <(sort file1.txt) <(sort file2.txt) | awk '{printf "%-7s %-7s %-7s %-7s %-7s %7s\n",$1,$2,$3,$4,$5,$6}' | sort -nk1
文件2:
ID City Zipcode if_travel
123 amman 2222 yes
456 zarqa 3030 no
输出:
ID address phone City Zipcode if_travel
101 bla 1616 NA NA NA
123 jordan 123 amman 2222 yes
456 usa 144 zarqa 3030 no
789 bla 606 NA NA NA
join--help
将帮助您开始,或者在此处搜索[bash]join文件
,在这个主题上已经有100个QA。唯一的限制是输入文件必须按用于连接的键列排序。祝你好运