Как объединить разные строки файлов?

Какой самый быстрый способ командной строки для объединения различных строк файлов? Например, у меня есть два файла:

a.txt:

foo bar foobar 

b.txt

 foo foobar line by bar 

И я хотел бы получить следующий вывод:

 foo bar foobar line by 

Есть ли быстрый способ объединить файлы, как в примере выше? (Порядок строк не важен)

3 Solutions collect form web for “Как объединить разные строки файлов?”

Используйте awk seen если вы не хотите сортировать файл:

 $ awk '!seen[$0]++' a.txt b.txt foo bar foobar line by 
 $ sort -u a.txt b.txt bar by foo foobar line 

Это позволит отсортировать (объединенное) содержимое двух файлов, удалив дублирующиеся строки. Недостатком является то, что если строка дублируется в одном из файлов, это также будет удалено.

Чтобы записать результат в c.txt , используйте

 sort -u -o c.txt a.txt b.txt 

или стандартное redirect

 sort -u a.txt b.txt >c.txt 

Исходя из вашего желаемого результата, я предполагаю, что вы просто хотите, чтобы оба файла были объединены только с уникальными строками.

В этом случае cat , sort и uniq могут сделать это для вас:

 cat a.txt b.txt | sort | uniq > c.txt 

cat открывает содержимое обоих файлов

sort сортирует вывод по алфавиту

uniq перечисляет только уникальные строки

> c.txt помещает весь вывод в новый файл c.txt

Linux и Unix - лучшая ОС в мире.