MyTetra Share
Делитесь знаниями!
Программа comm - удаление одинаковых строк в двух файлах
Время создания: 01.03.2009 23:59
Текстовые метки: linux, comm, строка, повторение, одинаковые, удаление, текстовый, файл
Раздел: Компьютер - Linux - Bash - Команды и скрипты
Запись: xintrea/mytetra_syncro/master/base/0000000819/text.html на raw.github.com

Вопрос:


Как исключить из файла 1 строки, содержащиеся в файле 2? Например:



файл1:

1

2

3

4


файл2:

2

4

5


результат:

1

3



Ответ:


Никто не знает про команду comm? Данная утилита существует из покон веков и входит в состав пакета coreutils.



COMM(1) User Commands COMM(1)


NAME

comm - compare two sorted files line by line


SYNOPSIS

comm [OPTION]... FILE1 FILE2


DESCRIPTION

Compare sorted files FILE1 and FILE2 line by line.


With no options, produce three-column output. Column one contains

lines unique to FILE1, column two contains lines unique to FILE2, and

column three contains lines common to both files.


-1 suppress lines unique to FILE1


-2 suppress lines unique to FILE2


-3 suppress lines that appear in both files


--help display this help and exit



То есть, утилита сравнивает два заранее отсортированных файла, и выводит из них строки согласно заданным условиям. Условия регулируются следующими опциями:



  • -1 - не показывать строки, уникальные для первого файла
  • -2 - не показывать строки, уникальные для второго файла
  • -3 - не показывать строки, которые одновременно содержатся в обеих файлах



Таким образом, команда для решения вышеуказанной задачи будет выглядеть так:



$ comm -2 -3 файл1 файл2



Не следует забывать, что comm работает корректно только с отсортированными файлами.


Так же в этом разделе:
 
MyTetra Share v.0.58
Яндекс индекс цитирования