sed (вставка строки в определенном месте)

Софт под Linux, разные программы, но только связанные с Linux

Модератор: /dev/random

Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

sed

Сообщение sash-kan »

в ряд файлов (конкретно /home/<users>/.icewm/menu) хочу вставить строчку сразу после закомментированного блока, с которого начинаются эти файлы (комментарий начинается с решетки).
перебор файлов-то делается элементарно (find /home/ -maxdepth 3 |grep ".icewm/menu"|xargs ...), а вот sed-скрипт что-то не выходит.

sed -i -e '/^#/! s/^/prog some-prog some-prog some-prog\n/' file
вставляет нужную строку перед _каждой_ незакомментированной строкой.

sed -i -e '/^#/! {s/^/prog some-prog some-prog some-prog\n/ ; q}' file
обрезает файл после первой незакомментированной строки.

может, задача не решаема средствами sed?

прошу помощи, а то совсем запутался (или затупел?).

Sash Kan добавил в 22.06.2005 19:02

вот и сам разобрался (:
sed -i -e '1{x;s/^$/prog some-prog some-prog some-prog/;x};/^#/!{H;s/^$//;x}' file
может, кому пригодится.

Sash Kan добавил в 22.06.2005 19:06

нифига!
строки дублируются.
думаю дальше.

Sash Kan добавил в 22.06.2005 19:37

окончательный вариант:
sed -i -e '1{x;s/^$/prog some-prog some-prog some-prog\n/;x};/^#/!{H;s/^.*$//;x;s/\n//}' file
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
xorader
Сообщения: 1030
Статус: собирающий миры
ОС: Debian

Re: sed

Сообщение xorader »

тихо сам с собою, я веду беседу.... :rolleyes:
Molchanov Alexander (aka Xor)
*offtopic* - ololo!
Спасибо сказали:
allez
Сообщения: 2223
Статус: Не очень злой админ :-)
ОС: SuSE, CentOS, FreeBSD, Windows

Re: sed

Сообщение allez »

(xorader @ Четверг, 23 Июня 2005, 12:16) писал(а):тихо сам с собою, я веду беседу....  :rolleyes:
Но при этом, согласитесь, вполне содержательную и полезную для окружающих. Ну а если кому-то это и не полезно, то уж точно не вредно. :)
Спасибо сказали:
Аватара пользователя
Lemurian
Сообщения: 87
ОС: Zenwalk Linux 2.6

Re: sed

Сообщение Lemurian »

знатоки sed'a просвятите плз как в выводе ls . заменить все пробелы на "\ "
XFCE 4.3.90, KDE 3.5.1
Спасибо сказали:
Аватара пользователя
VAVka
Сообщения: 96

Re: sed

Сообщение VAVka »

Код: Выделить всё

ls | sed 's/ /\//'g
С уважением, VAVka (VAVka pagе)

NimbleX 200 Mb USB Edition (krnl 2.6.24/2.4.22)
{XOrg 1.4.0/IceWM 1.2.35}
Спасибо сказали:
Аватара пользователя
Lemurian
Сообщения: 87
ОС: Zenwalk Linux 2.6

Re: sed

Сообщение Lemurian »

Спасибо бооольшое
XFCE 4.3.90, KDE 3.5.1
Спасибо сказали:
Аватара пользователя
xorader
Сообщения: 1030
Статус: собирающий миры
ОС: Debian

Re: sed

Сообщение xorader »

(allez @ Четверг, 23 Июня 2005, 8:34) писал(а):
(xorader @ Четверг, 23 Июня 2005, 12:16) писал(а):тихо сам с собою, я веду беседу....  :rolleyes:
Но при этом, согласитесь, вполне содержательную и полезную для окружающих. Ну а если кому-то это и не полезно, то уж точно не вредно. :)



нисколько не спорю - так держать! :)
Molchanov Alexander (aka Xor)
*offtopic* - ololo!
Спасибо сказали: