【发布时间】:2019-03-03 19:00:19
【问题描述】:
我正在尝试编写一个 shell 脚本来比较两个单独的文件,并在地址和 LocationID 匹配时将 x/y/objectID/Status/Data 信息添加到第一个文件中。这是我的文件的样子:
文件A.csv:
MAC LocationID Node_ID Street City State Zip_Code
ABC123 182 AB12 25_Main_St Hanover WZ 12345
CDE123 128 CD12 35_Main_St Hooray TZ 23456
EFG123 812 EF12 45_Main_St Hello WA 45678
文件B.csv
objectid Status Data X Y LocationID Node_ID Street City State Zip_Code
555 RRR sss 123456 123444 182 AB12 25_Main_St Hanover WZ 12345
666 GGG ttt 234567 87978 128 CD12 35_Main_St Hooray TZ 23456
777 RRR uuu 54321 98765 812 EF12 45_Main_St Hello WA 45678
我很难找到任何类似于 linux shell 脚本示例的内容。有没有人有建议的方式来加入这两个文件?结果如下:
MAC objectid Status Data X Y LocationID Node_ID Street City State Zip_Code
ABC123 555 RRR sss 123456 123444 182 AB12 25_Main_St Hanover WZ 12345
CDE123 666 GGG ttt 234567 87978 128 CD12 35_Main_St Hooray TZ 23456
EFG123 777 RRR uuu 54321 98765 812 EF12 45_Main_St Hello WA 45678
请注意,文件的顺序不一定相同,Mac 文件中的行数比非 Mac 文件中的多。 Mac 文件有重复的 LocationID 和地址,但 Mac 的都是不同的。非 mac 文件不会有重复的 LocationID 或地址。
【问题讨论】:
-
使用
awk。将FileB读入一个使用locationID 作为键的数组中。然后读取FileA并将数组中的字段合并到当前行并打印出来。