Помогите написать скрипт на 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* . Вопрос как заменять скриптом.
sed -i 's|\(2[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\)|[\1 \1]|g' file
>sed -i 's|\(2[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\)|[\1 \1]|g' fileА можно расшифровать? s|\ как это работает? далее тоже встречается |
>>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 подставляется то, чтобы было найдено и запомнено раньше.
Доступно излагаю? :)
>[оверквотинг удален]
>
>
>В качестве того что заменять используется регулярное выражение: \(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% желаемый :)
Чуть ошибся с одной скобкой:
...
><TD>[http://219.32.246.07 219.32.246.07]<br/>[http://228.34.67.45 228.34.67.45]</TD>...