The OpenNET Project / Index page

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

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

"Замена строк по шаблону regexp на тоже+изменения"  +/
Сообщение от tos email(ok) on 15-Май-09, 12:49 
Помогите написать скрипт на bash (с помощью sed и т.п.) замены в текстовом файле строк по шаблону (ip адреса) на теже ip адреса + изменения вокруг них:
кусок исх. файла:

<TD align=center> 21</TD>
<TD align=center>qwe41</TD>
<TD>219.32.246.07<br/> 228.34.67.45</TD>
<TD>14.2.87.150<br/> 14.2.87.210</TD>


Необходимо получить:
<TD align=center> 21</TD>
<TD align=center>qwe41</TD>
<TD>[http://219.32.246.07 219.32.246.07]<br/>http://228.34.67.45 228.34.67.45]</TD>
<TD>14.2.87.150<br/> 14.2.87.210</TD>

Regexp для ip я уже составил: 2+\d*\.\d*.\d*\.\d* . Вопрос как заменять скриптом.

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

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


1. "Замена строк по шаблону regexp на тоже+изменения"  +/
Сообщение от phpcoder email(??) on 15-Май-09, 15:37 
sed -i 's|\(2[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\)|[\1 \1]|g' file
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Замена строк по шаблону regexp на тоже+изменения"  +/
Сообщение от tos email(ok) on 15-Май-09, 16:38 
>sed -i 's|\(2[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\)|[\1 \1]|g' file

А можно расшифровать? s|\  как это работает? далее тоже встречается |

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Замена строк по шаблону regexp на тоже+изменения"  +/
Сообщение от phpcoder email(??) on 15-Май-09, 16:44 
>>sed -i 's|\(2[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\)|[\1 \1]|g' file
>
>А можно расшифровать? s|\  как это работает? далее тоже встречается |

А что тут расшифровывать? :) В Perl/sed есть инструкция s/А/B/, которая заменяет A на B, в качестве разделителя используется косой слэш. Но также можно задать свой разделитель, я лично всегда использую прямую черту: s|||

В качестве того что заменять используется регулярное выражение: \(2[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\) которой означает что нужно найти IP-адрес, который начинается с двойки и "запомнить" его (это делают круглые скобки).

В качестве того на что заменять используется [\1 \1] в которое вместо \1 подставляется то, чтобы было найдено и запомнено раньше.

Доступно излагаю? :)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Замена строк по шаблону regexp на тоже+изменения"  +/
Сообщение от tos email(ok) on 15-Май-09, 17:21 
>[оверквотинг удален]
>
>
>В качестве того что заменять используется регулярное выражение: \(2[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\) которой означает что
>нужно найти IP-адрес, который начинается с двойки и "запомнить" его (это
>делают круглые скобки).
>
>В качестве того на что заменять используется [\1 \1] в которое вместо
>\1 подставляется то, чтобы было найдено и запомнено раньше.
>
>Доступно излагаю? :)

Понятно до слез. Я даже подправил (мне нужно чтобы перед первым ip вставлялось http://) :) :
sed -i 's|\(2[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\)|[http://\1 \1]|g' 1.txt

Спасибо, результат 100% желаемый :)


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Замена строк по шаблону regexp на тоже+изменения"  +/
Сообщение от tos email(ok) on 15-Май-09, 15:50 
Чуть ошибся с одной скобкой:
...
><TD>[http://219.32.246.07 219.32.246.07]<br/>[http://228.34.67.45 228.34.67.45]</TD>

...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

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

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




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

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