Заменить один символ в строке, только если он находится перед другим конкретным символом - PullRequest
0 голосов
/ 06 августа 2010

У меня есть случай, когда определенные URL-адреса искажаются знаком равенства, и мне нужно иметь возможность их удалить.

Пример неработающего URL-адреса:

http://www.go=ogle.com/search?ie=UTF

, который необходимо исправить вthis:

http://www.google.com/search?ie=UTF

Он не может просто заменить первое вхождение =, потому что не все URL сломаны, как это.

Существует ли sed / awk или другой способ удаления с помощью регулярных выраженийвсе случаи =, только если они встречаются перед знаком вопроса?

1 Ответ

0 голосов
/ 06 августа 2010

используйте

sed -e 's~\(http://[^?]*\)=\([^?]*\)~\1\2~'

, который в основном говорит, что нужно убрать один символ = из всего, начиная с http://, а затем иметь что-либо, кроме ?.

edit еще раз, это намного чище:

sed -e 's~\(http://[^/?]*\)=~\1~'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...