команда D в sed - вывод, кажется, отличается от того, что написано в руководстве - PullRequest
2 голосов
/ 23 июня 2019

Обнаружено следующее в руководстве по sed для команды D:

D - Если в шаблонном пространстве нет новой строки, начните обычный новый цикл, как если бы была введена команда d.В противном случае удаляет текст в пространстве шаблона до первой новой строки и перезапускает цикл с результирующим пространством шаблона, не читая новую строку ввода

Но пример, который я пробую, не кажетсячтобы соответствовать тому, что описано выше.

$cat test
LINE 101
LINE 201
LINE 301
LINE 401

$ sed -nr '1{p;N;p;D;}' test
LINE 101
LINE 101
LINE 201

На основании описания sed, которое я понял, я понял следующее:

  1. распечатать пространство шаблона (LINE 101)
  2. Добавить строку 201 в пространство шаблона, распечатать пространство шаблона (LINE 101 \ n LINE 201)
  3. Удалить до первой новой строки в пространстве шаблона.Пространство шаблонов теперь будет иметь строку LINE 201
  4. . Теперь руководство sed говорит: «и перезапустите цикл с результирующим пространством шаблонов, не читая новую строку ввода». Что бы означало вернуться к началу команды?Если это так, то мы должны иметь вывод - LINE 201, LINE 201 \ n LINE 301 и так далее в цикле до конца.

Но это не вывод, который я вижу,

...