2015-10-20 3 views
0

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

diff --changed-group-format='%>' --unchanged-group-format='' test2.csv test.csv >> testfile3.csv 

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

Например:

file 1 
1|9865|0|21 
2|5698|0|22 
3|2546|0|90 

file2 
1|9865|0|34 
2|1452|9|33 
3|2546|0|50 

expected output: 
2|5698|0|22 

Дайте мне ваши ценные предложения/идеи.

ответ

0

Программа diff не может этого сделать, поскольку она сравнивает только целые строки. Существуют инструменты, из которых вы можете создать инструмент, который делает это. Другие задавали аналогичный вопрос, например.

Первые два предлагают использовать AWK, в то время как третья предлагает пакет Perl. Два предложения для awk на самом деле для сравнить, а не diff, являются соответственно упрощенными. Если вам не нужно беспокоиться о добавленных/удаленных строках, подходов там будет достаточно.

perl package suggestion указывает, как построить ключ, который может быть использован для однозначной идентификации значения в (ваш случай) поле из файла CSV. В вашем приложении вы извлечете значение столбца, например, используя Text::CSV.

+0

У меня есть обновленный мой вопрос. – AbnSrn

+0

Существуют различные типы вопросов: как подойти к проблеме (задано и указано здесь) и как отремонтировать данную программу (для обсуждения не существует). –