LINUX.ORG.RU

sed and в одной строке

 ,


0

1

товарищи! может кто знает как седом такую штуку:

<offer>
<offer>lalala111</offer>
</offer>

превратить в

<offer>
<offer_id>lalala111</offer_id>
</offer>

к сожалению, не нагуглил как одновременно и <offer> в начале строки и </offer> в конце. спасибо.

Какая конкретно конструкция у тебя не заработала? Такое чувство, что ты забыл g указать.

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

Ну давай начнем с sed s/offer/offer_id/g <твой файл>. Возможно, она не подходит тебе по условию задачи, тогда я плохо понял условие.

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

Сорри, совсем затупил =) Ну я так и подозревал, что я что-то не понял. В данном случае в пример плохо вчитался.

winlook38 ★★
()

<offer>lalala111</offer>

к сожалению, не нагуглил как одновременно и <offer> в начале строки и </offer> в конце. спасибо.

«в начале» это «^»

«в конце» это «$»

`^' Matches the null string at beginning of the pattern space, i.e. what appears after the circumflex must appear at the beginning of the pattern space.

In most scripts, pattern space is initialized to the content of each line (*note How `sed' works: Execution Cycle.). So, it is a useful simplification to think of `^#include' as matching only lines where `#include' is the first thing on line--if there are spaces before, for example, the match fails. This simplification is valid as long as the original content of pattern space is not modified, for example with an `s' command.

`^' acts as a special character only at the beginning of the regular expression or subexpression (that is, after `\(' or `\|'). Portable scripts should avoid `^' at the beginning of a subexpression, though, as POSIX allows implementations that treat `^' as an ordinary character in that context.

`$' It is the same as `^', but refers to end of pattern space. `$' also acts as a special character only at the end of the regular expression or subexpression (that is, before `\)' or `\|'), and its use at the end of a subexpression is not portable.

RTFM

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

ок, спасибо большое. а не могли б Ви указать еще и как and приделать? потому что тот freaking manual я читал. но не понял. то есть как «в начале» и «в конце» товарищ уже указал. а где-то в общем виде есть?

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

http://emulek.tk/sed/

еще и как and приделать?

оно и так «приделано». /^бла-бла-бла$/

На практике не нужно забывать о том, что в конце строки могут быть невидимые символы, потому лучше писать /^бла-бла-бла\s*$/

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