Друзья!
я туплю. гуглил-гуглил...
в общем, есть строка в тексте, в ней есть символы XYZ10 Нужно убрать XYZ и после 10 поставить .0.0, т.е. XYZ10 меняется на 10.0.0
таких строк в тексте несколько, расположены могут быть в самых неожиданных местах.
Уверен, что sed это умеет, но вот никак не найду, как убрать первые три символа и после оставшихся двух дописать еще четыре.
В изначальном условии убираемых первых символов всегда три и они всегда одни и те же, оставляемых всегда два и они могут быть любыми и дописываемых - всегда четыре и они также всегда одни и те же.
echo "в общем, есть строка в тексте, в ней есть символы XYZ10" | sed 's/XYZ//g;s/10/10.0.0/'
в общем, есть строка в тексте, в ней есть символы 10.0.0
> echo "в общем, есть строка в тексте, в ней есть символы XYZ10"
> | sed 's/XYZ//g;s/10/10.0.0/'
> в общем, есть строка в тексте, в ней есть символы 10.0.0Вся проблема в том, что там необязательно 10 - может быть 11, 20 - любые две цифры.
>> 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'
>> 20 - любые две цифры.
>| sed 's/XYZ\(..\)/\1.0.0/g'| sed 's/XYZ\([0-9][0-9]\)/\1.0.0/g'
Чти ТЗ :)-<
>>> 20 - любые две цифры.
>>| sed 's/XYZ\(..\)/\1.0.0/g'
> | sed 's/XYZ\([0-9][0-9]\)/\1.0.0/g'
> Чти ТЗ :)-<Супер! Спасибо всем огромное за помощь!
> | sed 's/XYZ\([0-9][0-9]\)/\1.0.0/g'Тогда уж так
| sed 's/XYZ\([0-9]\{2\}\)/\1.0.0/g'> Чти ТЗ :)-<
Не передёргивай.
Смотрим самое начало:
> как убрать первые три символа и после оставшихся двух дописать еще четыреРечь шла о символах. ))
>> | sed 's/XYZ\([0-9][0-9]\)/\1.0.0/g'
> Тогда уж так
> | sed 's/XYZ\([0-9]\{2\}\)/\1.0.0/g'А в чём профит? Длина та же. Читаемость, н-ну, не обнозначно.
//А хочешь _1_ символ сэкономлю? %))
>> Чти ТЗ :)-<
> Не передёргивай.Согласен. Чего его чтить, когда оно в каждом мессадже меняется.
>>> | sed 's/XYZ\([0-9][0-9]\)/\1.0.0/g'
>> Тогда уж так
>> | sed 's/XYZ\([0-9]\{2\}\)/\1.0.0/g'
> А в чём профит? Длина та же. Читаемость, н-ну, не обнозначно.А так политкорректней.))
И потом, если будет не 2, а 3 цифры? Уже будет короче!> //А хочешь _1_ символ сэкономлю? %))
Да!
>> //А хочешь _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'
>>> //А хочешь _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'Мастер меча!