代码之家  ›  专栏  ›  技术社区  ›  Alfe

如何用sed插入某物一次

  •  1
  • Alfe  · 技术社区  · 8 年前

    我试图用多行块替换输入文件中的第一个空行,即

    one
    two
    
    three
    four
    
    five
    six
    

    我想创建

    one
    two
    
    foo
    
    three
    four
    
    five
    six
    

    为此,我尝试了这个 sed 脚本:

    sed '/^$/i\
    \
    foo'
    

    但它在/each/空行处插入。

    我如何调整此呼叫 标准偏差 所以它只在空行的第一次出现时插入?有没有办法告诉你 标准偏差 现在剩下的输入应该从复制到输出?

    我不想切换到 awk 或其他外壳工具,如 read 循环或类似方式。我只是对使用 标准偏差 对于此任务。

    2 回复  |  直到 8 年前
        1
  •  3
  •   Casimir et Hippolyte    8 年前

    您可以循环并打印行,直到文件结束:

    sed '/^$/{i\
    \
    foo
    :a;n;ba}' file
    
        2
  •  1
  •   Alfe    8 年前

    我找到了一种方法,将 i 用一个 s 命令:

    sed '0,/^$/s//\
    foo\
    /'
    

    但我更喜欢使用 命令,因为不是我在搜索后想做的所有事情都可以用 s .