LINUX.ORG.RU

Как удвоить все строки в текстовом файле

 , , ,


0

1

Условно, есть файл типа

11111
22222
33333
нужно превратить его в
11111
11111
22222
22222
33333
33333

Наверняка есть какая-то готовая команда в vi или emacs для этого, можете подсказать? Нет, это не студ. задание, просто нужно.

какая-то готовая команда

Ты правда думаешь, что на все случаи жизни есть готовая команда, или кнопка «сделать за@бись»?

Делай макрос, или пуляй через sed/awk как тут уже посоветовали.

no-such-file ★★★★★
()
Ответ на: комментарий от legolegs

Сделал через vim, но все равно спасибо за помощь, это тоже работает.

Vsevolod-linuxoid ★★★★★
() автор топика

Наверняка есть какая-то готовая команда в vi или emacs для этого, можете подсказать?

Нет ничего невозможного, вот готовая команда ☺:

ggqwyypjq2@w

gg — перейти в начало (если вдруг курсор не на первой строке). qw — начать запись макроса «w». yy — скопировать строку. p — вставить строку. j — перейти на строку ниже. q — закончить запись макроса. 2@w — два раза (осталось ещё две строки же) выполнить макрос w (для большего количества строк соответственно другое число).

Если кроме шуток, выше более кошерный вариант.

Psych218 ★★★★★
()
Последнее исправление: Psych218 (всего исправлений: 1)

Наверняка есть какая-то готовая команда в vi или emacs для этого, можете подсказать?

C-x ( C-a C-SPC C-e M-w ENTER C-y C-n C-x )

Запускать: C-x e

iVS ★★★★★
()

Наверняка есть какая-то готовая команда в vi или emacs для этого, можете подсказать?

Да, M-0 C-x e ((kmacro-end-and-call-macro 0)). А сама макрокоманда, надо думать, должна быть такой: C-k C-k C-y C-y.

То есть все вместе с самого начала: C-x C-f your-file RET C-x ( C-k C-k C-y C-y M-0 C-x e

Zmicier ★★★★★
()

Макросами же. При условии, что ты стоишь в начале первой строки:

F3
C-<space> C-e M-w <Enter> C-y C-p C-a
F4
C-u 0 C-x e

Nicholass ★★★
()
29 июля 2017 г.
Ответ на: комментарий от xaizek

Обрабатывать целые строки лучше в режиме командной строки

:g/$/normal Yp

Avshch
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.