温馨提示×

awk在linux中如何输出格式化

小樊
82
2024-12-28 07:12:51
栏目: 智能运维

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

这个命令的解释如下:

  1. BEGIN { OFS = " "; fmt = "%.2f\t%.2f\t%.2f\n" }: 在处理输入文件之前,设置字段分隔符(OFS)为制表符(\t),并定义一个格式字符串(fmt),用于控制输出的格式。这里我们保留了两位小数。

  2. { data[NR] = $1, value[NR] = $2, count[NR] = $3 }: 读取每一行的数据,并将其存储在关联数组 datavaluecount 中。其中,NR 是当前行号,$1$2$3 分别表示第一、第二和第三个字段。

  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 的文件中。

0