我一直在尝试3天,试图了解如何使用AWK为我提供我期待的结果。让我首先说我不是程序员,充其量只是新手。我看过大约30种不同的方式来做我想做的事情,但他们要么不是完全匹配的,我必须改变事情,他们不工作,或者从一开始就不工作。使用AWK查找2个CSV文件中的数据
目标:比较2个CSV文件并将数据导出到另一个CVS文件。我需要查看文件1(标题为sampleData)中第2列或第3列中的任何Mac地址是否显示文件2中的第2列(标题为sampleLeases),然后从文件2列出第1列,即匹配的mac地址,以及文件2中的第1列。
我的问题可能源于我对AWK中关联数组的误解,但我试图在旅途中学习,并且需要帮助。
我已经尝试过这其中许多other.Sorry为长期发布,我只是想尽可能彻底。以下是一组样本数据。
sampleLeases.csv
10.1.2.3,00:11:22:33:44:55
10.1.2.4,00:11:22:33:44:56
10.1.2.5,00:11:22:33:44:57
10.1.2.6,00:11:22:33:44:58
10.1.2.7,00:11:22:33:44:59
10.1.2.8,00:11:22:33:44:60
10.1.2.9,00:11:22:33:44:61
10.1.2.10,00:11:22:33:44:62
10.1.2.11,00:11:22:33:44:63
10.1.2.12,00:11:22:33:44:64
10.1.2.13,00:11:22:33:44:65
10.1.2.14,00:11:22:33:44:66
10.1.2.15,00:11:22:33:44:67
10.1.2.16,00:11:22:33:44:68
10.1.2.17,00:11:22:33:44:69
10.1.2.18,00:11:22:33:44:70
10.1.2.19,00:11:22:33:44:71
10.1.2.20,00:11:22:33:44:72
10.1.2.21,00:11:22:33:44:73
sampleData.csv
comp. name,mac address,mac address 2,os version,S/N,dept.,building,asset number
bldg1-rm200-01,00:11:22:33:44:55,22:33:44:55:66:77,Osversion,98745562,cart,main,6587521336
bldg1-rm200-02,11:22:33:44:56:44,00:11:22:33:44:56,Osversion,98745562,cart,main,6587521336
bldg1-rm200-03,00:11:22:33:44:57,22:33:44:55:66:79,Osversion,98745562,cart,main,6587521336
bldg1-rm200-04,00:11:22:33:44:58,22:33:44:55:66:80,Osversion,98745562,cart,main,6587521336
bldg1-rm200-05,11:22:33:44:59:45,00:11:22:33:44:60,Osversion,98745562,cart,main,6587521336
bldg1-rm200-06,00:11:22:33:44:61,22:33:44:55:66:82,Osversion,98745562,cart,main,6587521336
bldg1-rm200-07,11:22:33:44:61:45,00:11:22:33:44:62,Osversion,98745562,cart,main,6587521336
bldg1-rm200-08,00:11:22:33:44:63,22:33:44:55:66:84,Osversion,98745562,cart,main,6587521336
bldg1-rm200-09,00:11:22:33:44:64,22:33:44:55:66:85,Osversion,98745562,cart,main,6587521336
bldg1-rm200-10,00:11:22:33:44:65,22:33:44:55:66:86,Osversion,98745562,lab,main,6587521336
bldg1-rm200-11,11:22:33:44:65:56,00:11:22:33:44:66,Osversion,98745562,lab,main,6587521336
bldg1-rm200-12,11:22:33:44:66:56,00:11:22:33:44:67,Osversion,98745562,lab,main,6587521336
bldg1-rm200-13,11:22:33:44:67:20,00:11:22:33:44:68,Osversion,98745562,lab,main,6587521336
bldg1-rm200-14,11:22:33:44:68:34,00:11:22:33:44:69,Osversion,98745562,lab,main,6587521336
bldg1-rm200-15,00:11:22:33:44:70,22:33:44:55:66:91,Osversion,98745562,lab,main,6587521336
bldg1-rm200-16,11:22:33:44:70:59,00:11:22:33:44:71,Osversion,98745562,lab,main,6587521336
所需的输出格式
bldg1-rm200-01,00:11:22:33:44:55,10.1.2.3
比KS。
编辑:
我试着通过karkafa和Xorg建议的两种方法,我没有收到任何输出。我附上了一张屏幕截图,其中显示了我的Awk版本(实际上是GNU Awk)和Linux内核版本,以防万一它相关。我使用Linux Mint 17.2 Rafaela来测试我的AWK脚本。 Screenshot showing no AWK output.
你是在正确的轨道上,检查我的答案,并尝试修复你的代码。 – karakfa
@karakfa谢谢你们花时间看我的问题。虽然我尝试使用这两种方法,但没有收到任何输出,但我似乎遭受了更大的问题。我添加了截图到我原来的发布。 – user3792046
和@Xorg,上述声明是为两者而设计的。 – user3792046