Почему sed не удаляет мои пустые строки?

Почему эта команда sed не удаляет пустые строки?

sed -e 's/\r//g' -e '/^{$/d' -e '/^}$/d' -e ':begin;$!N;/^state-text: {[[:space:]]\n/s/\n//;tbegin;P;D' -e "s/'/''/g" -e '/^$/d' <<< $myvar 

Эта команда работает отлично, за исключением последней части -e '/ ^ $ / d' для удаления пустых строк, которые вообще ничего не делают. Вот пример моего содержания:

 begin dump Ctrl_ID:100 

Это тот же контент, что и у cat -A

 begin dump$ $ Ctrl_ID:100$ 

Рассмотрение пустой строки с помощью редактора Hex показывает, что все, что она содержит, – это один единственный символ с шестнадцатеричным значением

 0A 

Это точно такой же код в конце каждой строки.

Я не понимаю, что здесь происходит.

^$ должно совпадать, нет?

One Solution collect form web for “Почему sed не удаляет мои пустые строки?”

Попробуйте (удаление пустой строки теперь в первой позиции):

 sed -e '/^$/d' -e 's/\r//g' -e '/^{$/d' -e '/^}$/d' -e ':begin;$!N;/^state-text: {[[:space:]]\n/s/\n//;tbegin;P;D' -e "s/'/''/g" <<< $myvar 

Часть, которая отвечает за неработоспособную пустую строку-удалить, такова:

 -e ':begin;$!N;/^state-text: {[[:space:]]\n/s/\n//;tbegin;P;D' 

глубже …

D удаляет содержимое пространства шаблонов, вплоть до первой новой строки (или до конца, если нет новой строки), и запускает новый цикл. Последнее означает, что любые команды, которые приходят после D в программе sed, не будут выполняться, если выполняется сам D.

отсюда

  • Как ретроактивно создавать скрипт с правами root?
  • Как найти все шестнадцатеричные числа между двумя номерами
  • скрипт командной строки gnome-open
  • bash - Функция escape-символа?
  • Получить переменную из строки
  • Запустить скрипт на / dev / tty-доступ
  • Почему параметр $ 0 дает мне только базовое имя вместо полного пути после преобразования x-shellscript в x-исполняемый?
  • Нужен сценарий оболочки для преобразования CSV в формат Apache httpd
  • Сроки выполнения скриптов с помощью usbmount
  • Сценарий Bash для удаления пользователя
  • удаление данных из txt-файла
  • Linux и Unix - лучшая ОС в мире.