【发布时间】:2014-09-13 13:17:15
【问题描述】:
我在文件中有一行如下:
LDAP_EXTERNAL_URL=ldap://server.domain.com:389
我需要将// 之后的所有内容替换为server2.domain.com:399
开始对正则表达式感到头疼。请指教。
【问题讨论】:
-
您需要更改的只是这一行,还是该 URL 的几行?
我在文件中有一行如下:
LDAP_EXTERNAL_URL=ldap://server.domain.com:389
我需要将// 之后的所有内容替换为server2.domain.com:399
开始对正则表达式感到头疼。请指教。
【问题讨论】:
也许:
sed -r 's|^(.*ldap://).*|\1server2.domain.com:339|' file
好的,让它更完整:
sed -r 's|^(LDAP_EXTERNAL_URL=ldap://).*|\1server2.domain.com:339|' file
添加-i 以启用内联编辑。
【讨论】:
LDAP_EXTERNAL_URL 匹配到// 而不仅仅是ldap:// URL 如果只有一行要更改,可能会更安全。当然最终还是要看OP的文件内容。
如果您不严格坚持使用 sed,也可以使用以下内容。
perl -pe 's!^LDAP[^/]*//server\K.*!2.domain.com:399!' file
【讨论】: