【问题标题】:Replace 2nd to last line -1 in vi在vi中替换第二行到最后一行-1
【发布时间】:2012-03-30 05:21:32
【问题描述】:

我正在尝试替换 sed 中第 2 行到最后 1 行的内容。但我无法正确寻址。

例如:在文件中

    1
    2
    3
    4
    5

我想做:

    1
    2,
    3,
    4,
    5

在 vi 中它必须类似于:2,$-1s/$/,/ 但 $-1 不起作用。请提出建议。

【问题讨论】:

  • 抱歉,不是编程问题。投票转移到 superuser.com。祝你好运。
  • @Sumit Kumar Ghosh :2,$-1s/$/,/ 工作正常(Ubuntu 11.10 上的 vim 7.3.154)

标签: regex unix sed vi


【解决方案1】:

这可能对你有用:

seq 5 | sed '1b;$b;s/$/,/'
1
2,
3,
4,
5

【讨论】:

    【解决方案2】:

    你很接近。您需要在“s”命令的末尾添加一个“g”。在 vim 中:

    :2,$-1 s/$/,/g
    

    会把事情做好。

    【讨论】:

    • 实际上,:2,$-1s/$/,/ 工作得很好(Ubuntu 11.10 上的 vim 7.3.154) - g 用于当您想要进行多次替换时,所以这里不需要那个。见:help :s_flags
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-03
    • 2017-01-23
    • 1970-01-01
    • 2013-12-03
    相关资源
    最近更新 更多