在第一列之后和最后一列之前插入逗号

时间:2012-03-06 08:19:07

标签: awk

我想在第一列之后以及文件的所有行的最后一列之前插入一个逗号,其中每行包含不同数量的字段。

E.g。这是文件:

test1 test2 test3
test1 test2 test3 test4 test5 test6
test1 test2 test3 test4 
test1 test2 test3 test4 test5

我想让它看起来像:

test1, test2, test3
test1, test2 test3 test4 test5, test6
test1, test2 test3, test4 
test1, test2 test3 test4, test5

我正在尝试类似下面的内容,但它无法正常工作(语法错误或无预期输出):

awk '{NF=NF-1;for (i=NF; i==NF; i--) $i="," print $NF }' my_file1

3 个答案:

答案 0 :(得分:3)

awk '{ $1=$1","; $(NF-1)=$(NF-1)","; print }'

注意:如果NF = 2,这将在第一个字段后插入两个逗号,这符合您的要求,但可能不是您真正想要的。如果你想处理它,只需添加一个额外的if

答案 1 :(得分:3)

您不需要for - 循环。你只是改变了两个领域。

我发现新行(和其他空格)可以使awk(和其他语言)更具可读性:

% awk '{
    $1 = $1","
    $(NF - 1) = $(NF - 1)","
    print
}
' my_file1
test1, test2, test3
test1, test2 test3 test4 test5, test6
test1, test2 test3, test4
test1, test2 test3 test4, test5

答案 2 :(得分:2)

如果您对sed答案感兴趣:sed -e 's/ /, /' -e 's/\(.*\) /\1, /'