Я использую команду tr
и sed
, чтобы заменить текст в моем файле, как этот tr '\ n' '' и как обсуждалось здесь . Хотя запуск этого в большом файле приведет к тому, что моя консоль будет забита замененным текстом.
Итак, мне нужно запускать команды, но не выводить их вывод.
Мой поиск в Google здесь и вызов tr --help
мне не помог, поэтому я спрашиваю здесь.
Маловероятно, что вы захотите отказаться от вывода конвейера. Более вероятно, что вы хотели бы хранить его где-нибудь, а не заполнять терминал.
Я думаю, это то, что вам нужно:
$ tr '\n' ' ' < afile.txt | sed '$s/ $/\n/' >anotherfile.txt
Это поместит результат конвейера в файл anotherfile.txt
, а не на терминал. Затем вы можете проверить его и заменить им исходный файл (mv otherfile.txt afile.txt
), если это имеет смысл с тем, чего вы пытаетесь достичь.
>
в конце конвейера — это перенаправление вывода, которое перенаправляет стандартный поток вывода sed
в указанный файл. Он работает «обратно» перенаправлению ввода <
, которое использовалось ранее в конвейере для отправки содержимого afile.txt
в стандартный поток ввода тр
.
В общем, вы можете заглушить вывод команды
с помощью
command 1>/dev/null
. Вещи, записанные в stderr, по-прежнему отображаются. Если вы также хотите отключить вывод в stderr, используйте:
command 1>/dev/null 2>&1
Еще короче:
command &>/dev/null
Если вы хотите узнать больше о перенаправлении файловых дескрипторов, найдите Перенаправление стандартного вывода и стандартных ошибок
в руководстве. страница Баша.