Совпадение файлов в начале строки

327
Bowi

Когда я устраиваю вечеринки, я записываю все, что едят мои гости. [1]

Примечание : я вставил несколько вкладок, чтобы все было читабельно.

party1.txt:

Bernhard Apple Jeremy Cake Liz Cake Daisy Pear 

party2.txt:

Liz Cake Bernhard Pear Jeremy Cake Susan Orange 

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

cat party1.txt | sort > party1-sorted.txt cat party2.txt | sort > party2-sorted.txt 

Но сравнивать вручную медленно. Есть ли у bash возможность иметь pasteMatchкоманду, дающую

Bernhard Apple Pear Daisy Pear  Jeremy Cake Cake Liz Cake Cake Susan Orange 


[1] Не совсем, конечно.

1
Я около вас отвечал: «Вам нужно больше убираться ...», потом я прочитал [1]. spikey_richie 5 лет назад 0
Как только они отсортированы, попробуйте использовать команду вставки, чтобы объединить различные файлы в столбцы. Возможно, вам придется внести некоторые изменения, если не все люди присутствовали на всех вечеринках. Lewis M 5 лет назад 0
Когда я использую `paste`, имена также удваиваются ... Bowi 5 лет назад 0

1 ответ на вопрос

1
harrymc

Самым простым решением является использование команды join .

Синтаксис будет:

join -j 1 -a 1 -a 2 party1-sorted.txt party2-sorted.txt 

Поле соединения по умолчанию является первым, разделенным пробелами. Эта команда, однако, заменит несколько пробелов по одному:

Bernhard Apple Pear Daisy Pear Jeremy Cake Cake Liz Cake Cake Susan Orange 

Более сложный формат вывода потребует использования awk или sed.

Небольшое дополнение, с небольшой помощью https://stackoverflow.com/a/15439906/6403504: Опция `-e HELLO` дает значение` HELLO` для каждой партии, в которой человек не был (пустое или несопоставленное поле ), но работает, только если указано `-o auto`. Bowi 5 лет назад 0