使用 awk 命令格式化文本文件

使用 awk 命令格式化文本文件

我正在使用这个命令:

awk 'NR>1 {print $1"  "$2}' fort.75 > newfort.75

并得到输出为

     7  -2.2964292555E+000
     8 -2.3013363831E+000
     9 -2.3071951989E+000
     10 -2.3136811351E+000
     11 -2.3207311925E+000

但所需的 o/p 是

      7 -2.2964292555E+000
      8 -2.3013363831E+000
      9 -2.3071951989E+000
     10 -2.3136811351E+000
     11 -2.3207311925E+000

第一个字段中的值的格式应使它们都具有相同的宽度。此外,第二个字段应从每行的同一列开始。

答案1

您可能意味着您希望按列输出(尽管在您的示例中数据也不同)。如果是这样,请尝试以下操作:

awk 'NR>1 {print $1 "\t" $2}' fort.75 > newfort.75

这将用制表符分隔您的输出\t

printf另一种可能性是按照Archemar的建议使用:

awk 'NR>1 {printf("%4i %f\n",$1,$2);}' fort.75 > newfort.75

其中第一列的格式为(在本例中)4 个字符宽度 - 根据需要进行调整。该空格由空格“”(无双关语)填充,并且不使用制表符。但是,浮点数也会重新格式化,因此请检查这是否适合您。如果不是,请将第二列视为字符串:

awk 'NR>1 {printf("%4i %s\n",$1,$2);}' fort.75 > newfort.75

相关内容