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

Исходное сообщение
"замена части текста с перестановкой местами"

Отправлено Alting , 15-Авг-13 11:32 
Друзья!
я туплю. гуглил-гуглил...
в общем, есть строка в тексте, в ней есть символы XYZ10 Нужно убрать XYZ и после 10 поставить .0.0, т.е. XYZ10 меняется на 10.0.0
таких строк в тексте несколько, расположены могут быть в самых неожиданных местах.
Уверен, что sed это умеет, но вот никак не найду, как убрать первые три символа и после оставшихся двух дописать еще четыре.
В изначальном условии убираемых первых символов всегда три и они всегда одни и те же, оставляемых всегда два и они могут быть любыми и дописываемых - всегда четыре и они также всегда одни и те же.

Содержание

Сообщения в этом обсуждении
"замена части текста с перестановкой местами"
Отправлено stereoPANDA , 15-Авг-13 11:48 
echo "в общем, есть строка в тексте, в ней есть символы XYZ10" | sed 's/XYZ//g;s/10/10.0.0/'
в общем, есть строка в тексте, в ней есть символы 10.0.0



"замена части текста с перестановкой местами"
Отправлено Alting , 15-Авг-13 11:57 
> echo "в общем, есть строка в тексте, в ней есть символы XYZ10"
> | sed 's/XYZ//g;s/10/10.0.0/'
> в общем, есть строка в тексте, в ней есть символы 10.0.0

Вся проблема в том, что там необязательно 10 - может быть 11, 20 - любые две цифры.



"замена части текста с перестановкой местами"
Отправлено михалыч , 15-Авг-13 12:00 
>> echo "в общем, есть строка в тексте, в ней есть символы XYZ10"
>> | sed 's/XYZ//g;s/10/10.0.0/'
>> в общем, есть строка в тексте, в ней есть символы 10.0.0
> Вся проблема в том, что там необязательно 10 - может быть 11,
> 20 - любые две цифры.

Тогда так
echo "blablabla XYZ10 and XYZ22 and blablabla" | sed 's/XYZ\(..\)/\1.0.0/g'


"замена части текста с перестановкой местами"
Отправлено Andrey Mitrofanov , 15-Авг-13 12:52 
>> 20 - любые две цифры.
>| sed 's/XYZ\(..\)/\1.0.0/g'

| sed 's/XYZ\([0-9][0-9]\)/\1.0.0/g'

Чти ТЗ :)-<


"замена части текста с перестановкой местами"
Отправлено Alting , 15-Авг-13 12:56 
>>> 20 - любые две цифры.
>>| sed 's/XYZ\(..\)/\1.0.0/g'
> | sed 's/XYZ\([0-9][0-9]\)/\1.0.0/g'
> Чти ТЗ :)-<

Супер! Спасибо всем огромное за помощь!


"замена части текста с перестановкой местами"
Отправлено михалыч , 15-Авг-13 13:07 
> | sed 's/XYZ\([0-9][0-9]\)/\1.0.0/g'

Тогда уж так
| sed 's/XYZ\([0-9]\{2\}\)/\1.0.0/g'

> Чти ТЗ :)-<

Не передёргивай.

Смотрим самое начало:
> как убрать первые три символа и после оставшихся двух дописать еще четыре

Речь шла о символах. ))


"замена части текста с перестановкой местами"
Отправлено Andrey Mitrofanov , 15-Авг-13 13:38 
>> | sed 's/XYZ\([0-9][0-9]\)/\1.0.0/g'
> Тогда уж так
> | sed 's/XYZ\([0-9]\{2\}\)/\1.0.0/g'

А в чём профит? Длина та же. Читаемость, н-ну, не обнозначно.

//А хочешь _1_ символ сэкономлю? %))

>> Чти ТЗ :)-<
> Не передёргивай.

Согласен. Чего его чтить, когда оно в каждом мессадже меняется.


"замена части текста с перестановкой местами"
Отправлено михалыч , 15-Авг-13 13:59 
>>> | sed 's/XYZ\([0-9][0-9]\)/\1.0.0/g'
>> Тогда уж так
>> | sed 's/XYZ\([0-9]\{2\}\)/\1.0.0/g'
> А в чём профит? Длина та же. Читаемость, н-ну, не обнозначно.

А так политкорректней.))
И потом, если будет не 2, а 3 цифры? Уже будет короче!

> //А хочешь _1_ символ сэкономлю? %))

Да!


"замена части текста с перестановкой местами"
Отправлено Andrey Mitrofanov , 16-Авг-13 09:57 
>> //А хочешь _1_ символ сэкономлю? %))
> Да!

Крибле, крабле! Бумс!! Ж)  //И да, -r -- _расширение GNU_. Типа, чит.

1. | sed 's/XYZ\([0-9]\{2\}\)/\1.0.0/g'
2. | sed -r 's/XYZ([0-9]{2})/\1.0.0/g'


"замена части текста с перестановкой местами"
Отправлено михалыч , 17-Авг-13 03:01 
>>> //А хочешь _1_ символ сэкономлю? %))
>> Да!
> Крибле, крабле! Бумс!! Ж)  //И да, -r -- _расширение GNU_. Типа,
> чит.
> 1. | sed 's/XYZ\([0-9]\{2\}\)/\1.0.0/g'
> 2. | sed -r 's/XYZ([0-9]{2})/\1.0.0/g'

Мастер меча!