linux - 如何用awk划分?

标签 linux bash awk

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

 #!/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

最佳答案

你可以使用这个 awk:

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

关于linux - 如何用awk划分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38855144/

相关文章:

Linux screen 命令,在 CentOS 7 上自动重命名

linux - 创建一个在压缩时会失败的文件

bash - 文件中最长的一行

regex - 如何使用动态列对日志输出进行 grep

database - 检查列表中是否存在某个字段,该列表也是数据库的一部分?

linux - 需要在大量文件上运行 srm 的想法

linux - git 显示 Mac NFS 文件系统上更改的随机文件

linux - 如何使用 curl 向 Google 发送请求

macos - 用于 mac 的 bash shell 脚本从文件生成单词列表?

regex - 如何使用正则表达式和 sed (或等效的 unix 命令行工具)来修复 LaTeX 标题中的标题大小写?