LINUX.ORG.RU

Нужна помощь, наверное sed...


0

0

В текстовом файле нужно заменить все вхождения

http://site.ru/modules.php?name=Forums&file=viewtopic&p=[ЧИСЛО]#[ЧИСЛО]
на
http://site.ru/viewtopic.php?p=[ЧИСЛО]#p[ЧИСЛО] 
не будь необходимости добавить «p» перед последним числом, то было бы все просто - s/ААА/БББ/g, а в этом случае как быть? то есть как это «p» туда вписать?

А в чём проблема-то?Так же: s/#/#p/

test

echo "http://site.ru/modules.php?name=Forums&file=viewtopic&p=35#81"| sed 's/#/#p/;s/\http:\/\/site.ru\/modules.php?name=Forums&file=viewtopic&p=/http:\/\/site.ru\/viewtopic.php?p=/' 

anonymous
()
Ответ на: комментарий от anonymous

Проблема в том, что таким макаром оно позаменяет все # на #p, а мне нужно только те, которые в url определенного вида
Это база форума и лишь некоторые ссылки нужно поправить..

vasilisa
() автор топика

Регулярные выражения в помощь. Что то типа s/odno([0-9]+)#([0-9]+)/drugoye\1#\2/g. Синтаксис regex в sed щас не помню, в манах должно быть.

vga ★★
()
Ответ на: комментарий от vga

Эээ... Я к сожалению в regex-ах вообще не волоку(
По поиску Ваш шаблон работает но как это мне поможет? То есть я опять таки не пойму как вставить «p» перед последним числом
Маны читаю, однако толку пока нет((

vasilisa
() автор топика
Ответ на: комментарий от vasilisa

Ну вот там в замене это p и вставлять \1#p\2 - \1 и \2 - первое и второе числа. Только синтаксис у меня vimовский, я седовского не помню.

vga ★★
()
Ответ на: комментарий от vga

>Только синтаксис у меня vimовский, я седовского не помню.

Синтаксис регулярок у них одинаковый. man perlre.

srj ★★
()
Ответ на: комментарий от vga

> \1#p\2 - \1 и \2 - первое и второе числа.

Ааа, вот где собака порылась! Спасибо, ща попробую.

Только синтаксис у меня vimовский, я седовского не помню.


Сделаю vim-ом, не пофиг что ли...

vasilisa
() автор топика
Ответ на: комментарий от vga

Огромное спасибо! Все получилось.

Пойду учить регулярные выражения...

vasilisa
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.