sed给出的前一个正则表达式错误无效

sed给出的前一个正则表达式错误无效,sed,grep,Sed,Grep,我是一个轮换团队的成员,负责管理许多网站,我们继承了一个网站的一些特别糟糕的代码,我们正在进行完全重新设计。非常可怕的是,开发服务器上有一些链接将您引向实时服务器、旧域和许多其他可怕的事情 我一直在尝试编写一个grep/sed命令,用用户定义的php函数full_link替换所有这些链接,我们现在在网站上使用这个函数来防止所有链接到不同的地方。因此(为我们的域使用占位符)而不是编写http://www.place.com/foo/bar,您需要编写,当我们将它从一台服务器移动到另一台服务器时,它

我是一个轮换团队的成员,负责管理许多网站,我们继承了一个网站的一些特别糟糕的代码,我们正在进行完全重新设计。非常可怕的是,开发服务器上有一些链接将您引向实时服务器、旧域和许多其他可怕的事情

我一直在尝试编写一个grep/sed命令,用用户定义的php函数full_link替换所有这些链接,我们现在在网站上使用这个函数来防止所有链接到不同的地方。因此(为我们的域使用占位符)而不是编写
http://www.place.com/foo/bar
,您需要编写
,当我们将它从一台服务器移动到另一台服务器时,它就会工作

以下是我得到的:

grep -v 'echo' * -r -P | grep "(?<=<a href=['\"])(http:\/\/foo\.bar\.net\/|10\.41\.6\.118\/|http:\/\/foo2\.bar\.net\/)([^<]*?)(?=['\"])" -P | sed -r "s@(?<=<a href=['\"])(http://foo\.bar\.net/|10\.41\.6\.118/|http://foo2\.bar\.net/)([^<]*?)(?=['\"])@<?php echo full_link('\2'); ?>@gpw output"
从我所做的研究来看,似乎我可能在sed语句中漏掉了一些错误的东西,我尝试了很多方法,但它只给了我相同的消息,指向表达式的最后几个字符之一。

sed“s.http://[^/]*/.”
  • 查找
    http://[^/]*/
  • 替换为

这类事情通常更容易处理Perl@user2319752. 请注意,这依赖于备用字符“.”将搜索模式与替换模式分隔开来。虽然“/”是stnd分隔符字符(因为,??我不知道,它是可见的?),但大多数sed允许使用其他字符,
s
之后的第一个字符是什么,您经常会看到“|”和“@”作为替代字符。有些SED要求您避免第一次使用备用字符,因此您可能需要
“s”。http://...
。。。祝大家好运。是的,我使用@作为分隔符,因为它不在搜索或替换模式中。我真的很欣赏这种简化,但我最初将不同的可能URL分开,因为我不想让它替换外部链接,而我必须替换的一种链接只是一个没有任何
http://
的ip地址,任何
a
标记都不会将链接的结尾放在字符串的末尾,因此
$
可能不是最佳搜索。虽然将一行的其余部分放在函数中不会破坏任何东西(除非有php),但这并不是一个特别好的解决方案。
sed: -e expression #1, char 159: Invalid preceding regular expression