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

在sed转换中,如何仅为最后一行应用稍微不同的模式?,sed,Sed,我怎样才能扭转这种局面: aaa bbb ccc 为此: aaa, bbb, ccc 使用sed 请注意,除最后一行外,所有行都以逗号结尾 在我真正的问题中,我还对行进行了一些正则表达式替换。是否有一种解决方案不会复制它们?您可以使用: sed '$q;s/$/,/' 如果要在最后一行应用不同的替换,仍然可以使用$地址: sed '$s/$/;/;$q;s/$/,/' 以上内容将用替换该行的末尾如果是最后一行,否则将使用, $s/$//=在最后一行,将该行末尾替换为 $q=在最后一行,退

我怎样才能扭转这种局面:

aaa
bbb
ccc
为此:

aaa,
bbb,
ccc
使用
sed

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

在我真正的问题中,我还对行进行了一些正则表达式替换。是否有一种解决方案不会复制它们?

您可以使用:

sed '$q;s/$/,/'
如果要在最后一行应用不同的替换,仍然可以使用
$
地址:

sed '$s/$/;/;$q;s/$/,/'
以上内容将用
替换该行的末尾如果是最后一行,否则将使用

  • $s/$//=在最后一行,将该行末尾替换为
  • $q
    =在最后一行,退出
  • s/$/,/
    =将行尾替换为
  • 最后一个
    s
    命令将针对每一行运行,但不会针对
    q
    命令位于2的最后一行运行。告诉它退出


    见:

    您可以使用:

    sed '$q;s/$/,/'
    
    如果要在最后一行应用不同的替换,仍然可以使用
    $
    地址:

    sed '$s/$/;/;$q;s/$/,/'
    
    以上内容将用
    替换该行的末尾如果是最后一行,否则将使用

  • $s/$//=在最后一行,将该行末尾替换为
  • $q
    =在最后一行,退出
  • s/$/,/
    =将行尾替换为
  • 最后一个
    s
    命令将针对每一行运行,但不会针对
    q
    命令位于2的最后一行运行。告诉它退出


    见:


    这样做的诀窍是:分别给sed两个命令使其在管道中工作并避免了重复。这样做的诀窍是:分别给sed两个命令使其在管道中工作并避免了重复。