仅当一个字符出现在另一个特定字符之前时,才替换一行中的一个字符

时间:2010-08-05 23:45:20

标签: regex

我有一个实例,其中某些网址格式错误且标记相同,我需要能够将其删除。

网址损坏示例:

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

要更正:

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

它不能简单地替换第一次出现的=,因为并非所有网址都像这样被破坏。

是否有sed / awk或其他正则表达式方法只有在问号出现之前删除=的所有实例?

1 个答案:

答案 0 :(得分:0)

<击>使用

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

基本上是从http://开始除了?以外的任何东西中剥离一个=字符。

编辑再次查看它,这更加清晰:

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