2013-11-28 5 views
1

Я пытаюсь сравнить два очень больших файла csv и сравнить их с помощью свободного текстового поля в обоих. Я пробовал использовать awk, например.Сравните два больших файла csv по полю и сохраните вывод

awk -F, 'FNR==NR{a[$2]++;next} a[$2]' table1.csv table2.csv > duplicates.csv 

, но выходной файл csv некорректно отформатирован, возможно, потому что свободное текстовое поле содержит запятые. Я хотел бы сохранить всю повторяющуюся строку в таблице1 в дублирующей таблице. Спасибо за вашу помощь.

+0

разборе CSV трудно с AWK. Как поля с запятыми цитируются или исчезают? – Gabe

+0

Они просто цитируются и не содержат пробелов между запятыми и кавычками между полями. Я могу читать данные в python/pandas просто отлично, но мне было интересно, есть ли там хороший однострочный интерфейс. –

+0

Можете ли вы предоставить несколько образцов ввода и вывода? Было бы полезно. – Birei

ответ

0

ли я понял право вам нужно что-то вроде:

$ more filea fileb 
:::::::::::::: 
filea 
:::::::::::::: 
1,a 
2,b 
3,c 
:::::::::::::: 
fileb 
:::::::::::::: 
1,d 
x,e 
3,f 
$ awk 'BEGIN { 
    while (getline a < "filea" && getline b < "fileb") { 
     split(a, aa, ",") 
     split(b, bb, ",") 
     if (aa[1] == bb[1]) { 
      print a, b 
     } 
    } 
}' 
1,a 1,d 
3,c 3,f 
Смежные вопросы