URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9192
[ Назад ]

Исходное сообщение
"sed вставить текст"

Отправлено АлексейТ , 17-Июл-11 23:18 
данной командой вставляется пустая строка перед выражением (цифрой 5 в данном случае)
sed -i -e '/5/{x;p;x;}' tt
как сделать, чтоб вставлялся определенный текст, а не пустая строка?

Содержание

Сообщения в этом обсуждении
"sed вставить текст"
Отправлено allez , 18-Июл-11 04:56 
> данной командой вставляется пустая строка перед выражением (цифрой 5 в данном случае)
> sed -i -e '/5/{x;p;x;}' tt
> как сделать, чтоб вставлялся определенный текст, а не пустая строка?

Попробуйте так:

sed -i -e '/5/iопределенный текст' tt


"sed вставить текст"
Отправлено allez , 18-Июл-11 11:34 
>> данной командой вставляется пустая строка перед выражением (цифрой 5 в данном случае)
>> sed -i -e '/5/{x;p;x;}' tt
>> как сделать, чтоб вставлялся определенный текст, а не пустая строка?
> Попробуйте так:
>
sed -i -e '/5/iопределенный текст' tt

P. S. На тот случай, если текст нужно будет вставлять не отдельной строкой, а в одной
строке с выражением, воспользуйтесь такой командой:

sed -i -e 's/5/определенный текст &/g' tt


"sed вставить текст"
Отправлено АлексейТ , 22-Июл-11 19:35 
proxy# sed -i -e '/5/iyyyyyyy' tt
sed: 1: "/5/iyyyyyyy": command i expects \ followed by text
proxy# sed -i -e '/5/i\yyyyyyy' tt
sed: 1: "/5/i\yyyyyyy": extra characters after \ at the end of i command
proxy# sed -i -e '/5/i\yyyyyyy\' tt
sed: 1: "/5/i\yyyyyyy\": extra characters after \ at the end of i command
proxy# sed -i -e '/5/iyyyyyyy\' tt
sed: 1: "/5/iyyyyyyy\": command i expects \ followed by text
proxy# sed -i -e '/5/i yyyyyyy\' tt
sed: 1: "/5/i yyyyyyy\": command i expects \ followed by text


proxy# sed -i -e 's/5/ddd &/g' tt - не заменяет, а добавляет перед выражением


"sed вставить текст"
Отправлено allez , 22-Июл-11 19:57 
> proxy# sed -i -e 's/5/ddd &/g' tt - не заменяет, а добавляет
> перед выражением

Ну да, добавляет. У вас ведь нигде не сказано, что нужна именно замена. А чтобы sed
заменял  искомое выражение, уберите из команды амперсанд:

sed -i -e 's/5/ddd/g' tt

По поводу ошибок в команде "i" могу сказать одно: читайте свой man sed, поскольку
вы не поделились никакой информацией ни об используемой ОС, ни о версии sed. Кроме того, у
меня таких ошибок не возникает:

$ echo -e "125369\ndsf\n5\nfd989" | sed -e '/5/iопределенный текст'
определенный текст
125369
dsf
определенный текст
5
fd989

$ echo -e "125369\ndsf\n5\nfd989" | sed -e 's/5/ определенный текст &/'
12 определенный текст 5369
dsf
определенный текст 5
fd989

$ echo -e "125369\ndsf\n5\nfd989" | sed -e 's/5/ определенный текст /'
12 определенный текст 369
dsf
определенный текст
fd989

$ sed --version
GNU sed версия 4.2.1



"sed вставить текст"
Отправлено АлексейТ , 22-Июл-11 20:28 
sed -i -e 's/5/ddd/g' tt

спасибо, этого достаточно