Поиск…


Синтаксис

  • -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 $


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow