Разница между кошкой имя_файла | сортировать, сортировать <имя_файла, сортировать имя_файла в bash - PullRequest
0 голосов
/ 19 марта 2020

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

Ответы [ 2 ]

0 голосов
/ 19 марта 2020

Решение с использованием cat включает создание второго процесса без необходимости. Это может быть проблемой производительности, если вы выполняете много таких операций в al oop.

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

При передаче имени файла в качестве явного аргумента, процесс sort должен заботиться об открытии файла и сообщать об ошибке, если есть это проблема доступности.

0 голосов
/ 19 марта 2020

Команда sort (1) считывает строки текста, анализирует и сортирует их и записывает результат. Команда предназначена для чтения строк , а строки в unix / linux завершаются новой строкой .

Команда принимает свой первый неопциональный аргумент как файл для чтения; если нет спецификаций, он читает стандартный ввод . Итак:

sort имя_файла

- это командная строка с таким аргументом. В двух других примерах, «... | sort» и «sort <...», не указывается файл для непосредственного чтения для сортировки (1), но используется его стандартный ввод <em>. Эффект для вида (1) тот же.

способы сделать это без необходимости записывать новые строки в отдельной строке

В конечном итоге нет. Но если вы хотите, вы можете кормить sort , используя другой фильтр (программу), который читает файл без разделения на строки и создает строки для передачи для сортировки. Если такая программа существует и называется «myparse», вы можете сделать:

myparse non-linefeed-отделение-file | сортировать

...