【问题标题】:Shell: adding a new line between a given line of textShell:在给定的文本行之间添加新行
【发布时间】:2010-10-15 13:00:26
【问题描述】:

这个问题不是问的是如何在与模式匹配的每行下方或上方添加新行。

我想做的是在一行上存在的模式之间添加一个新行。

这是一个例子。

之前:

周一:上午 8 点至晚上 10 点

之后:

星期一:

上午 8 点至晚上 10 点

因此,在这种情况下,在每个“星期一”模式之后插入新行。

【问题讨论】:

    标签: text shell sed awk newline


    【解决方案1】:

    使用 sed:

    echo "Monday:8am-10pm" | sed -e 's/:/:\n\n/'
    

    【讨论】:

    • 看来你的线路有点乱了。
    【解决方案2】:
    sed 's/Monday:/&\n\n/g'
    

    将替换它们(假设您需要 2 个换行符,如上所示)

    【讨论】:

    • 这两个换行符是我的错误。我的意思是它只是 1 个换行符。但是,如果是这样的话,您将是正确的。谢谢。
    【解决方案3】:
    sed 's/Monday:/&\n/g'
    

    【讨论】:

      【解决方案4】:
      echo 'Monday:8am-10pm' | sed -e 's/^Monday:/&\n/'
      

      对于不超过“:”的字符:

      echo 'Monday:8am-10pm' | sed -e 's/^[^:]*:/&\n/'
      

      【讨论】:

      • 这个答案更完整 - 我在发布后修改了我的使用 & 字符。