【问题标题】:Multi-line search with sed使用 sed 进行多行搜索
【发布时间】:2019-07-03 01:14:58
【问题描述】:

我需要在配置文件中添加几行。格式如下:

[Topic1]
param=foo
param=bar
param=foobar

[Topic2]
param=one
param=two

等等……

我正在尝试使用 sed 编写脚本以将参数附加到特定主题。由于所有主题都有param=,因此我不能在该字符串最后一次出现之后插入一行。另外,我不能指望最后一个参数的值是一致的,所以例如我不能只在字符串param=two之后插入一行@

任何帮助将不胜感激。我对 mutliline sed-fu 不太熟悉。 谢谢!

【问题讨论】:

  • 欢迎来到 SO!如果您尝试过任何代码,请将其添加到您的问题中。
  • 问了一百遍了,搜一下档案就行了。

标签: sed


【解决方案1】:

sed -i -r ':a; N; $!ba; s/\[Topic1\]\n(param=[a-zA-Z]*\n)*/&param=VALUE\n/g' FILE_NAME

基本上:a; N; $!ba; 所做的是将所有行而不是最后一行 (N) 附加到:a 创建的标签中,以便我们可以在表达式中使用\n

然后匹配 [Topic1] 后跟任意数量的 param=xxx,并将 param=VALUE 附加到匹配结果的末尾(&)。

【讨论】:

    猜你喜欢
    • 2012-03-13
    • 2021-02-18
    • 1970-01-01
    • 2019-09-04
    • 1970-01-01
    • 1970-01-01
    • 2010-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多