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

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

У меня есть два файла с именами. Когда я запускаю cat file1 file2 | sort, терминал показывает имена, отсортированные в алфавитном порядке, но когда я запускаю, cat file1 file2 > file3 | sortя не вижу отсортированного вывода. Почему?

решение1

Вы уже перенаправили вывод file1и file2в новый файл file3.

С помощью этой команды cat file1 file2 > file3 | sort, sortпосле символа трубы.

Это можно проверить следующим образом.

cat file1
A
Z
B
cat file2
F
G
C

Теперь, когда я запускаю команду as, cat file1 file2 > file3 | sortмы видим, что содержимое file1и file2записывается, file3но не сортируется.

Я считаю, что то, чего вы пытаетесь добиться, можно было бы довольно легко осуществить, если бы:

cat file1 file2 | sort > file3

Однако вывод в окне консоли не отображается.

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

cat file1 file2 | sort > file3; cat file3

teeОднако в данном случае его полезно использовать . teeможно эффективно использовать как,

cat file1 file2 | sort | tee file3

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

Как пользователькейсиотмечает, что если zshв вашей системе доступна оболочка, вы также можете использовать следующую команду.

sort <file1 <file2 | tee file3

решение2

POSIX определяет sortназначение утилиты следующим образом:

Сортировать строки всех указанных файлов вместе и записать результат в указанный вывод.

Вы можете отсортировать два файла в объединенный выходной файл следующим образом:

sort $opts file1 file2 >output_file

Если вы хотите увидеть вывод на вашей оболочкеstdout исохраните результаты в выходном файле, а затем используйте tee:

sort $opts file[12] | tee output_file

Связанный контент