2013-05-30 18 views
0

它我與uniq的真糊塗,排序,AWK所以... 了2 CSV比較2 CSV找到匹配輸出使用Linux外殼

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條線路進行了比賽

回答

1

您給定的輸入和輸出不匹配。 12717, 1319913, 17596我無法在您的第一個文件中找到它們。我認爲他們只是個例子。我認爲以下行是你在找什麼,所以嘗試這條線:

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

第一場聯繫起來是, 你是對的。這只是一個例子。我在'300513-code.csv 30-05-4UTF.csv> new.csv中使用了awk -F,'NR == FNR {a [$ 0]; next} $ 1,所以這給了我所有人在new.csv中的匹配,TY非常多。 – fob

+0

@請您寫下這種單線摺疊的摺疊,不是嗎? +1 –

+0

@Jaypal cp第一部分,(沒有輸入文件),有一天你會用它作爲答案。 :D開玩笑,我只是在沒有測試的情況下輸入它,因爲沒有什麼可以測試的。這類問題真的被問過很多次了。 – Kent

0

如果您正試圖使用​​從每個文件(在Linux上的bash)

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