Unix команда для разделения двух списков на три: общее между двумя и уникальное для каждого? - PullRequest
1 голос
/ 08 февраля 2012

Существует ли простой набор команд Unix, который я могу использовать для разделения двух списков на три списка, которые состоят из общих строк между двумя списками, строк, уникальных для первого, и строк, уникальных для последнего?Списки были бы не отсортированы, и каждая строка была бы уникальной.

Например: Список 1: шляпа кошки box

Список 2: кошачья собака box

Вывод: box, catшляпа, собака рок

1 Ответ

1 голос
/ 08 февраля 2012
cat file1
box
cat
hat

cat file2
box
dog 
rock

comm file1 file
              box
cat
   dog
hat
   rock

Выходные данные основаны на столбцах, причем столбец является данными только в 1-м файле, 2-й столбец - данными только во 2-м файле, а 3-й столбец - значения, общие для обоих.

Обратите внимание, что данные отсортированы .

Если вы используете bash, вы можете делать такие вещи, как

 comm <(sort file1) <(sort file2)

для временной сортировки файлов.

используя аргументы для comm, такие как -1 -2, вы можете подавить вывод столбца 1 and 2, и, конечно, -3 сам по себе выделит 3-й столбец (общие слова), оставив только слова, не являющиеся общими .

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...