在一条线上替换一个字符之前另一特定字符
问题描述:
我哪里有某些网址越来越有等号畸形的情况下,我需要能够将其删除。在一条线上替换一个字符之前另一特定字符
一个例子破网址:
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~'
完美工作,感谢 – neurophobic 2010-08-06 00:25:49
我将描述不同,但是这几乎是我会用什么。不知道你可以使用〜的地方。我会说你'替换任何以http://开始的字符串,以=结尾,并且没有?的原始字符串,不包括=。' – Slartibartfast 2010-08-06 01:56:40
@slartibartfast:我更新了(几乎)与你的描述相匹配的答案;-) – mvds 2010-08-06 03:05:05