LINUX.ORG.RU
решено ФорумAdmin

Как на вставить строку на ed


0

1

есть файл содержащий строку

AAAA

Надо перед этой строкой В ТОМ ЖЕ файле вставить строку

BBBB

Подскажите как это написать на ed

★★★

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

slavaz@notebook /tmp $ echo «AAAA»> test.txt
slavaz@notebook /tmp $ ed test.txt
5
s/\(AAAA\)/BBBB\1/
w test.txt
9
q
slavaz@notebook /tmp $ cat test.txt
BBBBAAAA
slavaz@notebook /tmp $

Slavaz ★★★★★
()
Ответ на: комментарий от Jaberwock

> Как туда разрыв строки впихнуть?
Идея состоит в том. что нужно читать следующую строку, находясь на предыдущей. паттерн /re/ именно это и делает.

P.S. если понадобится что-либо вставить после некой строки, то используйте ?re?

P.P.S. man ed :)

Slavaz ★★★★★
()
Ответ на: комментарий от Slavaz

Еще раз спасибо. Про heredoc то я и забыл :-)

Jaberwock ★★★
() автор топика
Ответ на: комментарий от rival

потому что я собираюсь отредактировать файл и сохранить под тем же именем. Резервные копии не интересуют.

Jaberwock ★★★
() автор топика
Ответ на: комментарий от Jaberwock

Ну так sed -i тебе поможет обойтись без резервных копий.

vden ★★
()
Ответ на: комментарий от drBatty

> очевидно - условия задачи.
На самом деле не очевидно. Я вот подумал, что он просто не осилил man sed. Я сам как-то давно упорно искал опцию или способ изменения файла sed'ом, без создания временной копии.

rival ★★
()
Ответ на: комментарий от rival

строго говоря, sed создаёт таки резервную копию (ЕМНИП ed тоже). Т.е.,

1)сначала создаётся временный файл в том-же каталоге что и исходный

2) в него пишется новые данные

3)старый файл удаляется(это если просто -i, без PREFIX)

4)новый переименовывается.

Этот «странный» UNIX-Way позволяет редактировать файлы без права модификации. Потому у вас всё равно ничего не получится. Без временной копии - только свой код, например на Си. (ну я, во всяком случае, не умею).

ЗЫЖ а ман и инфо для sed я уже перевёл на русский, пиарить себя не хорошо, да и гугл знает.

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