sed
Дополнительные опции
Поиск…
Синтаксис
- -a - (BSD sed) Создавать / обрезать все файлы, написанные до обработки
- -E | -r - Использовать расширенные регулярные выражения
- -i | -I - См. Раздел «Редактирование на месте»
- -l - (BSD sed) Использовать вывод с линейной буферизацией
- -l length - (GNU sed) Укажите длину для
l
командной строки - -s - (GNU sed) Обработка файлов как отдельных потоков
- -u - Не буферировать вывод
- -z - (GNU sed) Используйте символ NUL для разделения записей
- --quiet | --silent - (GNU sed) Синонимы для
-n
- --expression = command - (GNU sed) Синоним для
-e
- --file = command_file - (GNU sed) Синоним для
-f
- --follow-symlinks - (GNU sed) Следуйте символическим ссылкам
- --in-place [= extension] - (GNU sed) Синоним для
-i
- --line-length = length - (GNU sed) Синоним
-l
- --separate - (GNU sed) Синоним для
-s
- --unbuffered - (GNU sed) Синоним для
-u
- --null-data - (GNU sed) Синоним для
-z
- --help - (GNU sed) Использование печати
- --version - (GNU sed) Версия для печати
замечания
Опция -E
должна быть стандартизована в следующей крупной версии, см. Соответствующую проблему .
Задержка создания / усечения файлов
Файлы, написанные с помощью команды w
, создаются / усекаются перед выполнением любых команд.
$ sed 'w created-file' < /dev/null && ls created-file && rm created-file
created-file
Из стандарта:
Каждый wfile должен быть создан до начала обработки. Реализации должны поддерживать по меньшей мере десять аргументов wfile в скрипте; фактическое число (большее или равное 10), которое поддерживается реализацией, не определено. Использование параметра wfile приводит к тому, что этот файл будет первоначально создан, если он не существует, или заменит содержимое существующего файла.
BSD sed
предоставляет возможность -a
отсрочить создание / усечение файлов до тех пор, пока они не будут записаны с помощью команды w
.
$ if sed -a 'w created-file' < /dev/null && [ ! -e created-file ]; then
> echo The file was not created
> fi
The file was not created
'l' Линейная упаковка
При выполнении команды l
длина обертки строк определяется реализацией.
Из стандарта:
Длинные линии должны быть свернуты с точкой складывания, указанной путем записи a, за которой следует a; длина, на которой происходит сгибание, не определена, но должна быть подходящей для устройства вывода.
GNU sed
предоставляет параметр -l
для указания длины, с которой нужно разделить длинные строки при печати с помощью команды l
, по умолчанию для семидесяти символов.
$ yes | head -c100 | tr '\n' ' ' | sed -n l | head -n1 | wc -c
71
$ yes | head -c100 | tr '\n' ' ' | sed -nl50 l | head -n1 | wc -c
51
BSD sed
разделяет длинные строки на число, предоставленное переменной окружения COLUMNS
, если COLUMNS
не предоставляется, то он разбивается на ширину терминала, и если COULMNS
не предоставляется, а выход не является терминалом, то по умолчанию он имеет шестьдесят символов.
$ yes | head -c100 | tr '\n' ' ' | sed -n l | head -n1 | wc -c
61
$ yes | head -c100 | tr '\n' ' ' | COLUMNS=50 sed -n l | head -n1 | wc -c
51
$ yes | head -c100 | tr '\n' ' ' | sed -n l | head -n1
y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y\
y y y y y y y y y y $