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

比较2个csv,找到匹配项并使用linux shell输出,shell,csv,matching,Shell,Csv,Matching,我真的对uniq,sort,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,"Коробка М

我真的对uniq,sort,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行有一个匹配项

您给定的输入和输出不匹配<代码>12717131991317596我在您的第一个文件中找不到它们。我想他们只是一个例子。我想下面这句话就是你要找的,所以试试这句话:

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

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


join-11-21-t,是的,你是对的。这只是一个例子。我在一个'300513-code.csv 30-05-4UTF.csv>new.csv中使用了awk-F,'NR==FNR{a[$0];next}$1,所以这给了我new.csv中的所有匹配项,TY非常多。@Kent你写了这个单行代码,对吗+1@Jaypalcp第一部分(无输入文件),有一天您将在此处使用它作为答案:开玩笑的,我只是没有测试就把它打出来了,因为没有什么可测试的。这类问题确实被问了很多次。
join -1 1 -2 1 -t, <(sort -k1,1 -t, 300513-code.csv) 
<(sort -k1,1 -t,  30-05-4UTF.csv)