2014-07-22 160 views
-3

我有一条线在一个文件中,如下所示: 桑达搜索和替换

LDAP_EXTERNAL_URL=ldap://server.domain.com:389 

我需要server2.domain.com:399

开始//后取代一切以获得与正则表达式头痛。请指教。

+0

难道这只是你需要改变的一行吗,还是用这个URL多行? – Joel

+0

只是一条线。 – Dan

回答

1

如果您没有严格使用sed,您也可以使用以下内容。

perl -pe 's!^LDAP[^/]*//server\K.*!2.domain.com:399!' file 
+0

+1,总是一种享受你的精简perl工作的方式。 :) @丹,如果其中一个答案适合您,请点击左侧的复选标记,这是代表系统如何在这里工作。谢谢! – zx81

1

也许:

sed -r 's|^(.*ldap://).*|\1server2.domain.com:339|' file 

好,使之更加完整:

sed -r 's|^(LDAP_EXTERNAL_URL=ldap://).*|\1server2.domain.com:339|' file 

添加-i启用内嵌编辑。

+0

应该工作,但在我看来,如果只有一行需要更改,从'LDAP_EXTERNAL_URL'到'//'而不是仅仅'ldap://'URL的匹配可能会更安全。当然最终还是取决于OP的文件内容。 – Qeole

+0

@Qeole谢谢。我考虑过了。 – konsolebox