【问题标题】:Sed Search and ReplaceSed 搜索和替换
【发布时间】:2014-09-13 13:17:15
【问题描述】:

我在文件中有一行如下:

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

我需要将// 之后的所有内容替换为server2.domain.com:399

开始对正则表达式感到头疼。请指教。

【问题讨论】:

  • 您需要更改的只是这一行,还是该 URL 的几行?

标签: regex search replace sed


【解决方案1】:

也许:

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的文件内容。
【解决方案2】:

如果您不严格坚持使用 sed,也可以使用以下内容。

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

【讨论】:

  • +1,看到你的紧凑 perl 工作总是一种享受。 :) @Dan,如果其中一个答案对您有用,请单击左侧的复选标记,因为这就是代表系统在这里的工作方式。谢谢!
猜你喜欢
  • 2010-11-05
  • 2016-04-27
  • 2021-02-18
  • 2014-03-14
  • 2015-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多