2013-12-25 8 views
5

мне нужно заменить определенную часть ссылкиSed: заменить определенную часть

, например:

http://sub.somedomain.com/s/be2b46b4cb28ed64fe59d191cb600117/2013/image.jpg 

к

http://sub.somedomain.com/s/123123/2013/image.jpg 

что я пытался:

echo "http://sub.somedomain.com/s/be2b46b4cb28ed64fe59d191cb600117/2013/image.jpg" | sed "[email protected]/s/(.+?)/@[email protected]" 
+0

sed требует, чтобы вы избежали '(' и ')', чтобы использовать их для группировки. Но зачем вам группировать, если у вас нет обратной ссылки на замену? – Barmar

+0

Посмотрите на это: "; } –

ответ

5
sed "[email protected]/s/[^/]*/@/s/123123/@g" 

Проблема с регулярным выражением:

  • скобка ( и ) являются регулярными символами основных регулярных выражений (BRE) (и они на самом деле не нужны здесь)
  • + также не спец в BRE
  • если вы включили расширенные регулярные выражения с sed -E, вы бы слишком сильно соответствовали, потому что вы не останавливаетесь при следующей косой чертой
Смежные вопросы