【发布时间】:2018-09-28 21:11:12
【问题描述】:
需要根据文件中存在的字段数据使用 awk 打印日志文件。示例日志文件数据--
Joe,4
Tony,2
Peter,5
所需的输出 (第一个字段为 c---c--
Joe,c0,c1,c2,c3
Tony,c0,c1
Peter,c0,c1,c2,c3,c4
【问题讨论】:
-
欢迎来到 SO,请始终尝试在您的帖子中展示您的努力,也将您的示例包装在代码标签中。
需要根据文件中存在的字段数据使用 awk 打印日志文件。示例日志文件数据--
Joe,4
Tony,2
Peter,5
所需的输出 (第一个字段为 c---c--
Joe,c0,c1,c2,c3
Tony,c0,c1
Peter,c0,c1,c2,c3,c4
【问题讨论】:
请您尝试关注一下。
awk 'BEGIN{FS=OFS=","} {printf $1 OFS;k="";for(i=1;i<=$NF;i++){printf("%s%s","c"k++,i==$NF?ORS:OFS)}}' Input_file
【讨论】:
另一个awk,也许是最短的……
$ awk -F, '{f="";while($2--)f=FS"c"$2f;print $1f}' file
Joe,c0,c1,c2,c3
Tony,c0,c1
Peter,c0,c1,c2,c3,c4
【讨论】:
$ awk 'BEGIN{FS=OFS=","}{printf $1; for(i=0; i<$2; i++)printf("%sc%d",OFS, i ); print ""}' file
Joe,c0,c1,c2,c3
Tony,c0,c1
Peter,c0,c1,c2,c3,c4
解释
awk 'BEGIN{
FS=OFS="," # set i/p and o/p field separator
}
{
printf $1; # print first field
for(i=0; i<$2; i++) # loop from 0 to value in second field
printf("%sc%d",OFS, i ); # printf format string
print "" # finally print newline char
}
' file
【讨论】: