我想在第一列之后以及文件的所有行的最后一列之前插入一个逗号,其中每行包含不同数量的字段。
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
答案 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, /'