Как использовать относительные номера строк с шаблонами в ed - PullRequest
1 голос
/ 15 сентября 2011

Пытаясь использовать ed для удаления линий вокруг определенного шаблона, я сам сводил себя с ума.

Я хотел бы сопоставить шаблон, а затем удалить линии вокруг него.

Я пробовал несколько вариантов

ed test.txt <<<< $'/pattern/-1,+1d\nwq'
ed test.txt <<<< $'(/pattern/-1,+1)d\nwq'
ed test.txt <<<< $'/pattern/-,+1d\nwq'
ed test.txt <<<< $'(/pattern/-,+1)d\nwq'
ed test.txt <<<< $'/pattern/-,+d\nwq'
ed test.txt <<<< $'(/pattern/-,+)d\nwq'

Ни один из них не работал.Как это сделать?

Ответы [ 2 ]

2 голосов
/ 08 мая 2018

Используя точку с запятой, ;, установите текущую строку, ., перед обработкой второго адреса.Это делает второй адрес относительно первого, что почти соответствует желаемому:

/pattern/-;+2d

Поскольку второй адрес относится к первому, а не относительно шаблона , мынеобходимо использовать +2 для адресации строк до и после шаблона.

(Обратите внимание, что /pattern/- является сокращением для /pattern/-1)

1 голос
/ 15 сентября 2011

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

...