2013-12-17 3 views
3

Если у меня есть CSV-файлы, как этотКак объединить два CSV-файлы не включая дубликатов

[email protected]@scary animal 
[email protected]@human 
[email protected]@can fly 
[email protected]@man's best friend 
[email protected]@purrs a lot 
[email protected]@very scary 
[email protected]@blub blub 

и у меня есть еще один файл CSV, как этот

[email protected]@purrs a lot 
[email protected]@very scary 
[email protected]@blub blub 
[email protected]@fire 
[email protected]@yellow 

Я хочу выход быть, как это :

[email protected]@scary animal 
[email protected]@human 
[email protected]@can fly 
[email protected]@man's best friend 
[email protected]@purrs a lot 
[email protected]@very scary 
[email protected]@blub blub 
[email protected]@fire 
[email protected]@yellow 

некоторые из вещей в первом CSV-файле присутствуют во втором файле csv; они почти перекрываются. Как я могу объединить эти файлы csv с правильным порядком? Гарантируется, что новые записи всегда будут первыми рядом строк в начале первого CSV-файла.

+0

Вы хорошо, если выход отсортирован по алфавиту? – Dale

ответ

5

Soultion 1:

awk '!a[$0]++' file1.cvs file2.cvs 

Решение 2 (если не заботиться о первоначальном порядке)

sort -u file1 file2 
0

Вот один из способов:

  • Использование cat -n для конкатенации входных файлов и номера дополнительных номеров
  • Использование sort -u удалить дубликаты данных
  • Используйте sort -n сортировать снова предваряется номером
  • Используйте cut, чтобы удалить нумерацию
 
$ cat -n file1 file2 | sort -uk2 | sort -nk1 | cut -f2- 
[email protected]@scary animal 
[email protected]@human 
[email protected]@can fly 
[email protected]@man's best friend 
[email protected]@purrs a lot 
[email protected]@very scary 
[email protected]@blub blub 
[email protected]@fire 
[email protected]@yellow 
$ 
+0

Бесполезное использование премии Cat (http://partmaps.org/era/unix/award.html) – BMW

+0

@BMW - почему? Как бы вы объединили файлы * и * добавить номера строк? –

+0

@BMW - Возможно, вы имеете в виду первые два вызова кошки здесь. На самом деле это просто для демонстрационных целей, чтобы показать содержимое содержимого входных файлов перед обработкой. Я предполагаю, что этот дополнительный выход отвлекает от ответа и на самом деле не нужен, поэтому я удалю их –

Смежные вопросы