【问题标题】:Find pattern and edit text after the pattern using sed?使用 sed 在模式之后查找模式并编辑文本?
【发布时间】:2011-06-07 12:50:39
【问题描述】:

我有一个包含一些文本的文件,我感兴趣的是这一行: 构建 = 0 BUILD 的值不断变化的地方。

我在模式搜索“BUILD =”方面需要帮助,并用我的新字符串替换此模式之后的任何内容。

例如: 构建 = 测试

而且我还希望在原始文件上进行这种编辑并且不进行重定向。 这究竟是如何使用 sed 完成的?

提前感谢您的帮助。

【问题讨论】:

    标签: shell scripting sed


    【解决方案1】:
    sed -i 's/\(BUILD = \)\(.*\)/\1hello/g' test.txt
    

    注意:-i 与“就地”一样

    【讨论】:

    • 感谢您的帮助。我的主要挑战是 BUILD = 旧值,我不知道这个值,所以模式搜索只能包含“BUILD =”。我需要把它放在一个 shell 脚本中。
    • 好的,我明白了,我编辑了我的答案。我试过了,现在可以如你所愿了
    【解决方案2】:

    这是我想出的一些“类似案例”的解决方案:

    $ echo -e "0123\nBUILD = 2" | sed '/^BUILD =/ { s/0/a/; s/1/b/; s/2/c/; s/3/d/ }'
    0123
    BUILD = c
    

    所以解决您问题的命令的确切版本是:

    sed -i.bak '/^BUILD =/ { s/0/a/; s/1/b/; s/2/c/; s/3/d/ }' somefile.txt
    

    -i.bak 选项允许就地编辑并备份到具有.bak 扩展名的文件。

    【讨论】:

      猜你喜欢
      • 2021-07-28
      • 2014-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-30
      • 1970-01-01
      • 1970-01-01
      • 2016-05-18
      相关资源
      最近更新 更多