как найти разницу между CSV-файлом и файлом, содержащим только один столбец этого CSV-файла - PullRequest
0 голосов
/ 30 июля 2010

У меня есть CSV-файл, содержащий некоторые пользовательские данные, который выглядит следующим образом:

"10333","","an.10","Kenyata","","Aaron","","","","","","","","","",""
"12222","","an.4","Wendy","","Aaron","","","","","","","","","",""
"14343","","aaron.5","Nanci","","Aaron","","","","","","","","","",""

У меня также есть файл, в котором есть элемент в каждой строке, например:

an.10
arron.5

Я хочу найти только строки в файле CSV, содержащиеся в файле списка.

Таким образом, желаемый результат будет:

"10333","","an.10","Kenyata","","Aaron","","","","","","","","","",""
"14343","","aaron.5","Nanci","","Aaron","","","","","","","","","",""

(Обратите внимание, что an.4 не содержится в этом новом списке.)

У меня есть любая среда, доступная для меня, иЯ готов попробовать что угодно, кроме как сделать это вручную, поскольку этот CSV содержит миллионы записей, а в самом списке содержится около 100 тысяч записей.

Ответы [ 2 ]

1 голос
/ 30 июля 2010

Если файл csv - data.csv, а файл списка - list.txt, я бы сделал это:

for i in `cat list.txt`; do grep $i data.csv; done
1 голос
/ 30 июля 2010

Насколько уникальны идентификаторы an.10 и тому подобное?

Может быть, очень маленького * x сценария оболочки будет достаточно:

for i in $(uniq list.txt); do grep "\"$i\"" data.csv; done

Это будет для каждой уникальной записи всписок, вернуть все совпадающие строки в CSV-файле.Однако он не совпадает исключительно со вторым столбцом.(Это можно сделать, например, с помощью awk)

...