Да, используя команду w
или флаг w
для команды s
, оба из которых указаны в POSIX .
Например, с
sed -n 'w output.txt'
все, что подается на стандартный ввод sed
, будет записано в output.txt
, без вывода на стандартный вывод sed
(благодаря опции -n
). Это можно комбинировать с другими командами для управления пространством шаблонов перед его записью.
Несколько предупреждений и рекомендаций:
Если имя файла начинается с пробела, используйте префикс ./
:
sed -n 'w./ output with blanks.txt'
Если имя файла содержит символы новой строки, POSIXly, вы можете экранировать их с помощью обратной косой черты, хотя это не будет работать со всеми sed
реализациями (, в частности, не с GNU sed
и busyboxsed
):
sed -n 'w./output\
with\
newline.txt'
Если он содержит символы обратной косой черты, в некоторых реализациях (приведенных выше POSIX, которые поддерживают символы новой строки в именах файлов ), вам необходимо экранировать их с помощью обратной косой черты:
sed -n 'w file\\with\\backslash.txt' # POSIX
sed -n 'w file\with\backslash.txt' # GNU
Также обратите внимание, что выходной файл будет создан (или усечен ), даже если ввод пуст или команда w
никогда не выполняется, как в:
sed 'd;w file'
Или
seq 20 | sed '/21/ w file'
Вместо этого вы можете использовать awk
, чтобы избежать подобных проблем
FILE=arbitrary-file-name awk '/100/ {print > ENVIRON["FILE"]}'
Думаю, когда я сменил ядро, оно изменилось на GNOME classic. Итак, я вышел из системы, щелкнул значок шестеренки, затем выбрал Gnome и виоала!