比较2 csv找到匹配并使用linux shell输出

时间:2013-05-30 22:12:33

标签: shell csv matching

我真的很困惑uniq,排序,awk所以...... 得到2 csv

tail 300513-code.csv 
11916
11922
11896
11897
128647
1319760
1321176
1017022
1017017
1220901

尾巴30-05-4UTF.csv

131318,"...","st365-3",0,5
1220357,"Ящик алюминиевый зимний",,0,1
,"!!Марко Поло",,,
1014492,"Коробка Марко Поло TF1331D 13.8х7.7х3.1см.","1694.13.31","       16,00",1
1017795,"Ящик Марко Поло FS2000 white-black 2-х полочный 29х16х14см.","1694.20.01","      122,00",5
10923,"Ящик Марко Поло TR2045 red 2-х секционый большой 51.5х39.5х56.5см.","1694.20.45","      351,00",4
10925,"Ящик Марко Поло TR2045 yellow 2-х секционый большой 51.5х39.5х56.5см.","1694.20.47","      351,00",1
12717,"Металоискатель CARRETT",,"     4050,00",1
1319913,"Пакет 50 коп.","01.янв",0,269
17596,"Пакет полиэтиленовый 40х50",1,"        1,00",4843

所以第一个是我需要找到匹配的代码,只输出匹配的代码。示例output.csv

12717,"Металоискатель CARRETT",,"     4050,00",1
1319913,"Пакет 50 коп.","01.янв",0,269
17596,"Пакет полиэтиленовый 40х50",1,"        1,00",4843

假设这3行匹配

2 个答案:

答案 0 :(得分:1)

您的输入和输出不匹配。 12717, 1319913, 17596我在第一个文件中找不到它们。我认为他们只是榜样。我认为以下这一行是你正在寻找的,所以试试这一行:

awk -F, 'NR==FNR{a[$0];next}$1 in a' 300513-code.csv 30-05-4UTF.csv

答案 1 :(得分:0)

如果您尝试使用每个文件中的第一个字段进行链接(bash on linux)

join -1 1 -2 1 -t, <(sort -k1,1 -t, 300513-code.csv) 
<(sort -k1,1 -t,  30-05-4UTF.csv)