在一条线上替换一个字符之前另一特定字符

问题描述:

我哪里有某些网址越来越有等号畸形的情况下,我需要能够将其删除。在一条线上替换一个字符之前另一特定字符

一个例子破网址:

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

要纠正这个:

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

它不能简单地取代的=第一次出现,因为不是所有的URL被打破这样。

是否有SED/AWK或删除,只有当他们一个问号之前发生的=所有实例的其他正则表达式的方法?

使用

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

基本上说剥离从任何起始 http://内的一个字符=然后具有任何东西,但 ?

编辑了一遍看,这是很多清洁:

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

完美工作,感谢 – neurophobic 2010-08-06 00:25:49

+0

我将描述不同,但是这几乎是我会用什么。不知道你可以使用〜的地方。我会说你'替换任何以http://开始的字符串,以=结尾,并且没有?的原始字符串,不包括=。' – Slartibartfast 2010-08-06 01:56:40

+0

@slartibartfast:我更新了(几乎)与你的描述相匹配的答案;-) – mvds 2010-08-06 03:05:05