在sed转换中,如何仅针对最后一行应用稍微不同的模式?

时间:2011-05-28 01:23:53

标签: sed

我该怎么做呢:

aaa
bbb
ccc

进入这个:

aaa,
bbb,
ccc

使用sed

注意所有行都以逗号结尾,但最后一行除外。

在我真正的问题中,我也在线上做了一些正则表达式替换。有没有不会重复的解决方案吗?

1 个答案:

答案 0 :(得分:4)

您可以使用:

sed '$q;s/$/,/'

如果您想在最后一行应用不同的替换,您仍然可以使用$地址:

sed '$s/$/;/;$q;s/$/,/'

如果是最后一行,上面的代码会用;替换行尾,否则会使用,

  1. $s/$/;/ =在最后一行,用;
  2. 替换该行的结尾
  3. $q =在最后一行,退出
  4. s/$/,/ =使用,
  5. 替换该行的结尾

    最后一个s命令将针对每一行运行,但不会针对2. {2}处的q命令告诉它退出的最后一行。


    请参阅: