Использует ли команда sed команду «a» для префикса переносимой строки?

Я заметил следующее интересное поведение:

$ printf '%s\n' line{1..2} | sed $'1a\\\nPREFIX' line1 PREFIXline2 $ 

Интересно, что это поведение возможно только для последней команды в скрипте Sed, так как для ввода другой команды требуется новая строка.

Он также работает со вставкой:

 $ printf '%s\n' line{1..2} | sed $'1i\\\nPREFIX' PREFIXline1 line2 $ 

На что это зависит?

Я не вижу, чтобы это упоминалось так или иначе в спецификациях POSIX для Sed . Он просто говорит, что text может состоять из одной или нескольких строк. (Если строка не заканчивается символом новой строки, это все еще строка?)

Он также работает с несколькими вставками строк:

 $ printf '%s\n' line{1..2} | sed $'1a\\\n ****/\n1i\\\n/****\\\n * ' /**** * line1 ****/ line2 $ 

2 Solutions collect form web for “Использует ли команда sed команду «a» для префикса переносимой строки?”

Я просто проверил с другим Sed и обнаружил, что это особенность BSD Sed; GNU Sed дает разные результаты, наилучшим образом проиллюстрированные выходом последней приведенной выше команды:

 $ printf '%s\n' line{1..2} | sed $'1a\\\n ****/\n1i\\\n/****\\\n * ' /**** * line1 ****/ line2 $ 

Чтобы префикс строки со строкой, используйте подстановку (замены) и замените ^ :

 $ printf 'line1\nline2\n' | sed '1s/^/PREFIX/' PREFIXline1 line2 

Используйте a чтобы добавить строки после некоторой строки, и i чтобы вставить строку перед другой строкой.

«На что это зависит?» Нет. Как отмечает Стефан Чазелас в комментариях: «Это явно ошибка», а GNU sed не показывает описанное поведение.

  • grep: отображать имя файла один раз, затем отображать контекст с номерами строк
  • Добавление одного файла во второй до конца файла
  • Замена символом табуляции в Sed в Osx
  • Вставить строку после сопоставления строки в sshd внутри pam.d
  • Извлечение значений из файла с помощью нескольких ключей
  • Поиск и замена строк, которые не являются подстроками других строк
  • Как grep-inverse-match и исключать строки «before» и «after»
  • Файлы Cat 2 и избегайте дублирования строк
  • подмножество файла для правильных хромосом
  • Заменяйте строки, соответствующие шаблону, строками из другого файла в порядке
  • Как искать '/>' с sed
  • Interesting Posts

    Смутно с результатами после операции dd в конфигурации RAID6

    После установки oh-my-zsh: … /.zshrc:source:34: нет такого файла или каталога … /.oh-my-zsh/oh-my-zsh.sh

    Как некоторые команды изменяют критерии автозаполнения с вкладками?

    Легкая копия файла с diff

    Каковы накладные расходы на использование нескольких более мелких устройств рейдов в сравнении с секционированными устройствами рейдов в виде физических томов?

    sed удаляет последнее пространство только в конце строки, в сочетании с awk

    iptables и журналы

    Как я могу имитировать функциональные возможности gnome gsettings в KDE Plasma с помощью командной строки?

    Eclipse размывает текст при использовании полосы прокрутки

    Как «rm» в файловой системе NTFS отличается от собственной реализации Windows?

    Как начать сервис в systemd сразу после cryptsetup?

    Невозможно установить шрифт urxvt в Fedora 24 с помощью xfce

    Найти файлы tar.gz в папке старше 20 дней и удалить

    Почему LUKS нужно генерировать хеш-значения?

    Что такое эквивалент Linux для реестра Windows?

    Linux и Unix - лучшая ОС в мире.