Как запустить `tr` (команду перевода) и отключить ее вывод?

Я использую команду tr и sed , чтобы заменить текст в моем файле, как этот tr '\ n' '' и как обсуждалось здесь . Хотя запуск этого в большом файле приведет к тому, что моя консоль будет забита замененным текстом.

Итак, мне нужно запускать команды, но не выводить их вывод. Мой поиск в Google здесь и вызов tr --help мне не помог, поэтому я спрашиваю здесь.

-1
13.04.2017, 15:36
2 ответа

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

Я думаю, это то, что вам нужно:

$ tr '\n' ' ' < afile.txt | sed '$s/ $/\n/' >anotherfile.txt

Это поместит результат конвейера в файл anotherfile.txt, а не на терминал. Затем вы можете проверить его и заменить им исходный файл (mv otherfile.txt afile.txt), если это имеет смысл с тем, чего вы пытаетесь достичь.

> в конце конвейера — это перенаправление вывода, которое перенаправляет стандартный поток вывода sed в указанный файл. Он работает «обратно» перенаправлению ввода <, которое использовалось ранее в конвейере для отправки содержимого afile.txt в стандартный поток ввода тр.

3
28.01.2020, 05:08

В общем, вы можете заглушить вывод команды с помощью

command 1>/dev/null

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

command 1>/dev/null 2>&1

Еще короче:

command &>/dev/null

Если вы хотите узнать больше о перенаправлении файловых дескрипторов, найдите Перенаправление стандартного вывода и стандартных ошибок в руководстве. страница Баша.

0
28.01.2020, 05:08

Теги

Похожие вопросы