加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – 找到匹配后,文本文件中的sed内联替换句子

发布时间:2020-12-14 05:49:14 所属栏目:百科 来源:网络整理
导读:在找到匹配项后,我正在尝试替换文本文件中的第一个句子实例.请注意,’引号包含在搜索中. 我正在搜索第一个实例:’database‘= ‘localhost’ 的 我正在用”database’=替换第一个实例’new_database’ 我想只在字符串’REPLACE_AFTER_THIS’之后替换 我目前
在找到匹配项后,我正在尝试替换文本文件中的第一个句子实例.请注意,’引号包含在搜索中.

>我正在搜索第一个实例:’database‘=> ‘localhost’ 的
>我正在用”database’=>替换第一个实例’new_database’
>我想只在字符串’REPLACE_AFTER_THIS’之后替换

我目前有前两个要点:

sed -i file -e "1s/'database' => 'localhost'/'database' => 'new_database'/;t" -e "1,/'database' => 'localhost'/s//'database' => 'new_database'/" file

输入文件

'local config' ... 'data'
    'more data'
    'database' => 'localhost'
    'even more data'
'REPLACE_AFTER_THIS' ... 'data'
    'more data'
    'even more data'
    'database' => 'localhost'
'live config'
    'database' => 'localhost'

预期的输出文件(同一文件内联更改)

'local config' ... 'data'
    'more data'
    'database' => 'localhost'
    'even more data'
'REPLACE_AFTER_THIS' ... 'data'
    'more data'
    'even more data'
    'database' => 'new_database'
'live config'
    'database' => 'localhost'

上面的示例演示了除了字符串’database’=>之外没有预期的数据格式. ‘localhost’,第一次出现’REPLACE_AFTER_THIS’后需要更改.

但是,在找到某个字符串后,我无法弄清楚如何只执行上述操作.我已经尝试使用grep和一个模式来检索REPLACE_AFTER_THIS之后的所有文本,但是然后管道进入sed而不是使用-i标志不再对文件执行任何更改.

如何在文件中找到给定字符串后更改当前正在运行的解决方案以包含替换句子的第一个实例?

解决方法

尝试使用GNU sed:

sed -i "/'REPLACE_AFTER_THIS'/,/'database' => 'localhost'/s/'database' => 'localhost'/'database' => 'new_database'/" file

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读