我有许多列和数千行的几个文件。大多数条目的浮点精度太高,有些以科学记数法给出。我正在尝试使用awk重新格式化所有数字,但我对awk不是很熟悉。我曾尝试以下使用awk格式化数字
cat bs04_diff_all_e.csv | awk -v OFS="," -v OFMT="%.2f" -F"," 'NR == 45 {printf $1,$2,$3,$4,$11,$12,$13,$14,$15,$16,$17,$18,$19}'
,输出
648376.819998
只
。即该行中的第一个帖子,未格式化。
cat bs04_diff_all_e.csv | awk -v OFS="," -v OFMT="%.2f" -F"," 'NR == 45 {print $1,$2,$3,$4,$11,$12,$13,$14,$15,$16,$17,$18,$19}'
输出
648376.819998,7537575.31999,1692.0,34.99202,0.30931,0.0054,0.07764,0.01284,0.00849,0.04081,0.0403,0.00946,-9e-05
于是就有我得到的列,但格式仍然没有工作。我已经四处寻找解决方案,不知道为什么这不起作用,但正如我前面所述,我不熟悉awk。我究竟做错了什么?我是否真的必须单独指定所有44列的数字格式?
请添加一些样本输入数据和您的预期输出。 –
对于OFMT +1,我没有意识到。另外,而不是'cat file | awk ...',你可以直接执行'awk ... file'。 – fedorqui
那么,输出的最后一行基本上是输入,减去一些列。这是一个csv文件,包含一行标题,44列和数千行。如您所见,精度和格式会有所不同,但数据看起来像帖子底部附近的行。我的预期输出将是所有浮点数到小数点后两位的数字。 – mercergeoinfo