Как переместить первую строку в конец файла?

Как удалить строку после первой строки, которая содержит шаблон invHn3ion? , а затем переместить первую строку в конец файла?

Где можно Я выучил все эти выражения?

0
19.08.2016, 19:29
2 ответа

Начнем с чего-нибудь попроще. В редакторе vi для перемещения первой строки в конец используйте команду exm(move):

:1m$

Аргумент 1— это исходный диапазон :первой строки. Вы можете использовать диапазон, например 2,15m$, или сопоставление с образцом /a.*bc/m$. Место назначения $обозначает последнюю строку файла. Команда mпомещает перемещенный материал после целевой позиции.

Нет нулевой строки, но цель 0 указывает начало файла. Итак, чтобы вернуть линию туда, где она была:

:$m0

. переместите последнюю строку после фиктивной нулевой строки (, таким образом, перед строкой 1 ).

Итак, как насчет перемещения первой строки, соответствующей шаблону invHn3ion? Во-первых, мы считаем, что текущая позиция может быть где угодно. Мы хотим начать поиск с первой строки, а не с текущей позиции, поэтому:

:1/invHn3ion/m$

Здесь происходит то, что mфактически работает с адресным аргументом /invHn3ion/. 1— лишний адрес, который оценивается и отбрасывается 1 . Мы могли бы получить тот же эффект с двумя отдельными командами:

:1
:/invHn3ion/m$

Команда mимеет родственнуюt(передачу ), которая копирует, а не перемещает.


  1. См. Адресация в разделе Ex стандарта POSIX, начиная с параграфа «Команды принимают ноль, один или два адреса…».
1
28.01.2020, 02:35

Для sed используется команда:

sed '/invHn3ion?/{h;d}; ${g}' FILE

и, на самом деле, синтаксис sed очень похож на синтаксис vi -.

Прочитайте его как /ШАБЛОН/, если ШАБЛОН найден, выполните команды h :=скопировать шаблон для сохранения пробела, d :=удалить строку. $, если он не является частью регулярного выражения, обозначает последнюю строку файла. Таким образом, в последней строке g := получить содержимое удерживаемого пространства (и распечатать его, ранее сохраненный шаблон ).

Учебник по регулярным выражениям с sed/awk/perl должен научить вас этому. Есть видео YT -и книги, снятые также для vi/vim.

0
27.02.2021, 14:03

Теги

Похожие вопросы