awk
是一个强大的文本处理工具,它允许您在 Linux 和 Unix 系统中对文本文件进行分析和操作
awk 'BEGIN { OFS = " "; fmt = "%.2f\t%.2f\t%.2f\n" } { data[NR] = $1, value[NR] = $2, count[NR] = $3 } END { for (i = 1; i <= NR; i++) printf fmt, data[i], value[i], count[i] }' input.txt
这个命令的解释如下:
BEGIN { OFS = " "; fmt = "%.2f\t%.2f\t%.2f\n" }
: 在处理输入文件之前,设置字段分隔符(OFS)为制表符(\t),并定义一个格式字符串(fmt),用于控制输出的格式。这里我们保留了两位小数。
{ data[NR] = $1, value[NR] = $2, count[NR] = $3 }
: 读取每一行的数据,并将其存储在关联数组 data
、value
和 count
中。其中,NR
是当前行号,$1
、$2
和 $3
分别表示第一、第二和第三个字段。
END { for (i = 1; i <= NR; i++) printf fmt, data[i], value[i], count[i] }
: 在处理完所有行后,使用循环遍历关联数组,并按照之前定义的格式字符串(fmt)输出结果。
这个命令将从名为 input.txt
的文件中读取数据,并将格式化后的输出写入标准输出。如果您想将输出保存到另一个文件中,可以使用重定向操作符 >
,如下所示:
awk 'BEGIN { OFS = " "; fmt = "%.2f\t%.2f\t%.2f\n" } { data[NR] = $1, value[NR] = $2, count[NR] = $3 } END { for (i = 1; i <= NR; i++) printf fmt, data[i], value[i], count[i] }' input.txt > output.txt
这将把格式化后的输出保存到名为 output.txt
的文件中。