На самом деле это единственный раздел про unix на этом форуме
Модераторы: /dev/random , Модераторы разделов
savigm
Сообщения: 127
ОС: openSUSE
Сообщение
savigm » 21.10.2009 19:48
Собственно нужно добавить текст в конец каждого совпадения, т.е. допустим в файле есть символы "\n", а мне надо прилепить к ним еще "\r".
Средствами замены это делается так:
А есть ли средство добавления, а не замены?
a\ - не подходит, т.к. добавляет текст на следующую строку после совпадения.
/dev/random
Администратор
Сообщения: 5403
ОС: Gentoo
Сообщение
/dev/random » 21.10.2009 19:52
sed 's/ жуткое регулярное выражение / добавляемый в начало текст & добавляемый в конец текст /'
- не?
savigm
Сообщения: 127
ОС: openSUSE
Сообщение
savigm » 21.10.2009 19:55
/dev/random писал(а): ↑ 21.10.2009 19:52
sed 's/ жуткое регулярное выражение / добавляемый в начало текст & добавляемый в конец текст /'
- не?
Да, именно то, спасибо.
Час искал по инету, man смотрел, что-то про волшебный '$' нигде инфы не было.
/dev/random
Администратор
Сообщения: 5403
ОС: Gentoo
Сообщение
/dev/random » 21.10.2009 19:56
savigm писал(а): ↑ 21.10.2009 19:55
про волшебный '$'
&
savigm
Сообщения: 127
ОС: openSUSE
Сообщение
savigm » 21.10.2009 19:58
Опечатка, конечно "&", видимо знак доллара более привлекателен вниманию.
McLeod095
Сообщения: 477
ОС: Люблю слаку
Сообщение
McLeod095 » 22.10.2009 10:51
А так не подойдет
sed -e 's/\(regexp\)/\1add_text/'
"Work PC" E6750/2GB/Asus P5B Deluxe/2x250GB/6600GT 128/Slackware Current (Win 2003 in VmWare)
New Work: E6400/3GB/Arch
Home Book: Asus W6k00A/Arch, Asus 701/Arch
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux
Сообщение
eddy » 22.10.2009 11:01
[offtop]Кстати, это делает unix2dos
[offtop]
RTFM
-------
KOI8-R - патриотичная кодировка
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Сообщение
drBatty » 05.03.2010 19:18
eddy писал(а): ↑ 22.10.2009 11:01
Кстати, это делает unix2dos
не, оно не то делает, оно заменяет <LF> на <CR><LF>, а тут к двум символам добавляются ещё 2:
McLeod095 писал(а): ↑ 22.10.2009 10:51
А так не подойдет
sed -e 's/\(regexp\)/\1add_text/'
вот это и есть: "добавление к строке", как и требовалось изначально.
savigm писал(а): ↑ 21.10.2009 19:58
Опечатка, конечно "&", видимо знак доллара более привлекателен вниманию.
s/$/то_что_добавляется/
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE
Сообщение
t.t » 07.03.2010 10:56
drBatty писал(а): ↑ 05.03.2010 19:18
McLeod095 писал(а): ↑ 22.10.2009 10:51
А так не подойдет
sed -e 's/\(regexp\)/\1add_text/'
вот это и есть: "добавление к строке", как и требовалось изначально.
А выше разве не то же самое?
/dev/random писал(а): ↑ 21.10.2009 19:52
sed 's/ жуткое регулярное выражение / добавляемый в начало текст & добавляемый в конец текст /'
drBatty писал(а): ↑ 05.03.2010 19:18
savigm писал(а): ↑ 21.10.2009 19:58
Опечатка, конечно "&", видимо знак доллара более привлекателен вниманию.
s/$/то_что_добавляется/
Это уже не совсем по теме: добавление в конец каждой строки, а не после нужного текста.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Сообщение
drBatty » 07.03.2010 11:17
t.t писал(а): ↑ 07.03.2010 10:56
А выше разве не то же самое?
да.
выражения
/(X)/
/X/
эквивалентны. и подменяют &, \0, а первое ещё и \1
(как мы уже выяснили, \0 хоть и не стандартно, но работает)
t.t писал(а): ↑ 07.03.2010 10:56
Это уже не совсем по теме: добавление в конец каждой строки, а не после нужного текста.
savigm писал(а): ↑ 21.10.2009 19:48
А есть ли средство добавления, а не замены?
а мне кажется, что как раз по теме: это средство
добавления , а
не замены . Хотя, конечно можно и это считать заменой позиции конца строки.
Что касается "для всех строк", то это распространяется на все вышеприведённые примеры. Есть адрес, при необходимости.