The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"замена части текста с перестановкой местами"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

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

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "замена части текста с перестановкой местами"  +/
Сообщение от stereoPANDA (ok) on 15-Авг-13, 11:48 
echo "в общем, есть строка в тексте, в ней есть символы XYZ10" | sed 's/XYZ//g;s/10/10.0.0/'
в общем, есть строка в тексте, в ней есть символы 10.0.0


Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

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

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


Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "замена части текста с перестановкой местами"  +/
Сообщение от михалыч (ok) on 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'

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

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

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

Чти ТЗ :)-<

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "замена части текста с перестановкой местами"  +/
Сообщение от михалыч (ok) on 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'

> Чти ТЗ :)-<

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

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

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

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

7. "замена части текста с перестановкой местами"  +/
Сообщение от Andrey Mitrofanov on 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_ символ сэкономлю? %))

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

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

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "замена части текста с перестановкой местами"  +/
Сообщение от михалыч (ok) on 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_ символ сэкономлю? %))

Да!

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9. "замена части текста с перестановкой местами"  +/
Сообщение от Andrey Mitrofanov on 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'

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "замена части текста с перестановкой местами"  +/
Сообщение от михалыч (ok) on 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'

Мастер меча!

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2023 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру