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

Исходное сообщение
"Как экранировать апостроф в sed?"

Отправлено stereoPANDA , 02-Фев-11 15:14 
Хочу заменить единички на апострофы.
echo 111 | sed 's/111/\'\'\'/g'
Подскажите пожалуйста?

Содержание

Сообщения в этом обсуждении
"Как экранировать апостроф в sed?"
Отправлено Andrey Mitrofanov , 02-Фев-11 15:26 
> Хочу заменить единички на апострофы.

**>экранировать апостроф

Никак. Переходите к... конкатенированию! %)

$ echo 111 | sed "s/111/'''/g"
$ echo 111 | sed 's/111/'"'''"'/g'
$ echo 111 | tr 1 \'
$ echo 111 | sed 's/111/'\'\'\''/g'


"Как экранировать апостроф в sed?"
Отправлено stereoPANDA , 02-Фев-11 15:36 
>> Хочу заменить единички на апострофы.
> **>экранировать апостроф
> Никак. Переходите к... конкатенированию! %)
> $ echo 111 | sed "s/111/'''/g"
> $ echo 111 | sed 's/111/'"'''"'/g'
> $ echo 111 | tr 1 \'
> $ echo 111 | sed 's/111/'\'\'\''/g'

Спасибо, Андрей. А разъясни, пожалуйста, в чем разница между  1 и 2 и 4 вариантом?


"Как экранировать апостроф в sed?"
Отправлено Andrey Mitrofanov , 02-Фев-11 16:30 
>>> Хочу заменить единички на апострофы.
>> **>экранировать апостроф
>> Никак. Переходите к... конкатенированию! %)
>> $ echo 111 | sed "s/111/'''/g"
>> $ echo 111 | sed 's/111/'"'''"'/g'
>> $ echo 111 | tr 1 \'
>> $ echo 111 | sed 's/111/'\'\'\''/g'
> Спасибо, Андрей. А разъясни, пожалуйста, в чем разница между  1 и
> 2 и 4 вариантом?

Пожалуйста.

Для sed-а разница никакой, он получает один и тот же первый аргумент, текстовую строку

s/111/'''/g

. Разница в её формировании на уровне шела: 1) используются двойные кавычки (побочный эффект - проход макро-подсткновки (=пустой) шелом по этой строке) для того, чтобы шел рассматривал ' как "простой" символ; 2) конкатенация трёх строк - s/111/ + ''' + /g, обрамлённых разными кавычками; 4) аналогично -- строки, трёх экранированных символов и строки.

Вот ещё 5ы и 6ой варианты:

| sed s/111/"'''"/g
| sed s/111/\'\'\'/g

-- соответственно, 2ой и 4ый без обрамления-экранирования "просто строк". В отсутствие пробелов разницы нет.


"Как экранировать апостроф в sed?"
Отправлено Anoobizz , 15-Июл-13 14:40 
\x27