【问题标题】:SED: insert a word/string between two patterns in the SAME LINESED:在同一行的两个模式之间插入一个单词/字符串
【发布时间】:2019-10-17 07:26:46
【问题描述】:

我已经搜索了整个 stackoverflow(也许我只是不擅长搜索),但我找不到我的问题的答案。我正在尝试使用 sed 在同一行的两个模式之间插入一个单词或一个字符串。

我知道如何在搜索到的模式之后插入一个词

sed -e "s/pattern/& new_word/g"

带有与号 (&)。

但是这个命令会在每次出现的搜索模式中插入“new_word”,所以我试图指定它,以便它只在两个模式之间插入“new_word”。

例如,

Some words  = [want to insert words here];

如何在“一些单词(这里有多个空格)=”和“;”之间插入它?

这种命令的语法是什么?另外,你们用什么资源来学习sed?我搜索过的许多 sed 教程都非常基础,没有详细介绍不同选项和标志的用法。

谢谢。

【问题讨论】:

    标签: linux sed


    【解决方案1】:

    使用捕获组。

    sed -e 's/(pattern1)(pattern2)/\1new_word\2/'
    

    \1 被替换为与第一个模式匹配的任何内容,\2 被替换为与第二个模式匹配的任何内容。

    【讨论】:

    • 谢谢!那行得通,但我不得不使用双引号。使用单引号和双引号有什么区别?另外,我必须在括号前使用反斜杠,例如 sed -e "s/(something)(;)/\1new_word\2/"
    • 除非模式或替换中有变量,否则不需要双引号。
    猜你喜欢
    • 1970-01-01
    • 2012-07-11
    • 1970-01-01
    • 2014-09-07
    • 2021-02-13
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 2015-03-05
    相关资源
    最近更新 更多