Awk 如何排除打印最后一个字符

Awk 如何排除打印最后一个字符,awk,Awk,我有一个名为sample.txt的文件,其中包含以下内容: Tom 24 Sam 56 Bob 49 使用AWK/GAWK,我希望输出为: Tom:24, Sam:56, Bob:49 当我跑的时候 awk '{print $1 ":"$2 "," }' sample.txt Tom:24, Sam:56, Bob:49, 它还打印最后一行中49之后的“.”。如何避免最后一个逗号“,” 谢谢。awk'{if(1

我有一个名为sample.txt的文件,其中包含以下内容:

Tom    24
Sam    56
Bob    49
使用AWK/GAWK,我希望输出为:

Tom:24,
Sam:56,
Bob:49
当我跑的时候

awk '{print $1 ":"$2 "," }' sample.txt

Tom:24,
Sam:56,
Bob:49,
它还打印最后一行中49之后的“.”。如何避免最后一个逗号“,”

谢谢。

awk'{if(1awk '{if (1 < NR) print previous ","; previous = $1 ":" $2 } END { print previous }' sample.txt
但是,awk用于面向记录的处理。应该避免记录之间的依赖关系—另一种工具可能比awk更适合您的需要。

您可以尝试Perl

$ cat sam.txt
Tom    24
Sam    56
Bob    49

$ perl -a -ne ' $_="$F[0]:$F[1]"; print eof ? "$_\n":"$_,\n"  ' sam.txt
Tom:24,
Sam:56,
Bob:49
如果您的文件可以放入内存,那么

$ perl -0777 -ne ' s/[ ]+/:/g; print join(",\n",split) ' sam.txt
Tom:24,
Sam:56,
Bob:49
另一个awk

awk ' { a[NR]=$1 ":" $2 } END { for(i=1;i<NR;i++) { print a[i] "," } print a[NR] } ' 


using the given inputs

$ cat sam.txt
Tom    24
Sam    56
Bob    49

$ awk ' { a[NR]=$1 ":" $2 } END { for(i=1;i<NR;i++) { print a[i] "," } print a[NR] } ' sam.txt
Tom:24,
Sam:56,
Bob:49

$
awk'{a[NR]=$1:“$2}END{for(i=1;i
awk ' { a[NR]=$1 ":" $2 } END { for(i=1;i<NR;i++) { print a[i] "," } print a[NR] } ' 


using the given inputs

$ cat sam.txt
Tom    24
Sam    56
Bob    49

$ awk ' { a[NR]=$1 ":" $2 } END { for(i=1;i<NR;i++) { print a[i] "," } print a[NR] } ' sam.txt
Tom:24,
Sam:56,
Bob:49

$