sed给出的前一个正则表达式错误无效
我是一个轮换团队的成员,负责管理许多网站,我们继承了一个网站的一些特别糟糕的代码,我们正在进行完全重新设计。非常可怕的是,开发服务器上有一些链接将您引向实时服务器、旧域和许多其他可怕的事情 我一直在尝试编写一个grep/sed命令,用用户定义的php函数full_link替换所有这些链接,我们现在在网站上使用这个函数来防止所有链接到不同的地方。因此(为我们的域使用占位符)而不是编写sed给出的前一个正则表达式错误无效,sed,grep,Sed,Grep,我是一个轮换团队的成员,负责管理许多网站,我们继承了一个网站的一些特别糟糕的代码,我们正在进行完全重新设计。非常可怕的是,开发服务器上有一些链接将您引向实时服务器、旧域和许多其他可怕的事情 我一直在尝试编写一个grep/sed命令,用用户定义的php函数full_link替换所有这些链接,我们现在在网站上使用这个函数来防止所有链接到不同的地方。因此(为我们的域使用占位符)而不是编写http://www.place.com/foo/bar,您需要编写,当我们将它从一台服务器移动到另一台服务器时,它
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://[^/]*/
- 替换为
s
之后的第一个字符是什么,您经常会看到“|”和“@”作为替代字符。有些SED要求您避免第一次使用备用字符,因此您可能需要“s”。http://...
。。。祝大家好运。是的,我使用@作为分隔符,因为它不在搜索或替换模式中。我真的很欣赏这种简化,但我最初将不同的可能URL分开,因为我不想让它替换外部链接,而我必须替换的一种链接只是一个没有任何http://
的ip地址,任何a
标记都不会将链接的结尾放在字符串的末尾,因此$
可能不是最佳搜索。虽然将一行的其余部分放在函数中不会破坏任何东西(除非有php),但这并不是一个特别好的解决方案。
sed: -e expression #1, char 159: Invalid preceding regular expression