如何用awk划分?

时间:2016-08-09 15:43:35

标签: linux bash awk

我想读取文件并将所有元素除以0.03.Precision是重要的。然后将结果保存在输出文件中。

 #!/bin/bash

var=$(cat 262_V01_C00_R000_TEx_BL_2048H.dat)
mapfile var < infile

awk '{for(i=1;i<=NF;i++) $i=$i*100/3}1' infile > output

但我得到了

a4.sh: line 4: infile: No such file or directory

示例输入

-9.341203692800e+02
-9.320539972800e+02
-9.302205617600e+02

示例输出

-31137.345
-31068.466
-31007.352

2 个答案:

答案 0 :(得分:4)

你可以使用这个awk:

awk '$0+0 == $0 { printf "%.3f\n", $0 / .03 }' file
-31137.346
-31068.467
-31007.352
  • $0+0 == $0将确保仅对有效数字的行执行此除法。
  • printf "%.3f"将以3个精度点打印结果。

答案 1 :(得分:1)

创建测试数据

$ for i in {1..20}; do echo $RANDOM; done | pr -5ts' ' > file

除以0.03与乘以100并除以3相同。

$ awk '{for(i=1;i<=NF;i++) $i=$i*100/3}1' file

814633 811567 251933 1075000 1.08787e+06
424000 799200 687733 657300 314367
239467 162433 343867 337533 61533.3
1.00403e+06 1.02077e+06 1034100 1036500 155133