bash - 用于 awk 打印除以 1024 的值的 shell 脚本

标签 bash shell awk

我正在尝试对 awk 输出过程进行一些算术运算。 我的示例文件包含字符串并且它是计数的。现在我试图使计数值的格式为 MB(默认计数将以字节为单位。)

例子: 我的文件.txt

   a 123455
   b 34455566
   c 10394934839
   d 102445555

我的脚本:

  cat myfile.txt | while read line; do name=$line ; name=`echo $fname|awk '{print   $1}'` ; cnt=`echo $fname|awk '{print $1}'`; if [$cnt -gt 1024] ; then echo "$name value in critical $cnt";fi done

问题:我希望将 cnt 值转换为 MB ( cnt/1024/1024) 。

不知道如何实现这一点。

最佳答案

您可以直接在 awk 中完成,而无需在 BASH 中循环:

awk '{print $1, $2/(1024*1024)}' file
a 0.117736
b 32.8594
c 9913.38
d 97.6997

或 2 个小数点输出:

awk '{printf "%s %.2f\n", $1, $2/(1024*1024)}' file
a 0.12
b 32.86
c 9913.38
d 97.70

关于bash - 用于 awk 打印除以 1024 的值的 shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25077709/

相关文章:

linux - FreeBSD sed 就地编辑文件时出错

android - 如何在 Linux 下使用向上/向下键启用 Android adb shell 历史记录?

regex - 如何从 awk 结果中提取文本?

regex - awk/sed 帮助 - 如何查找包含逗号然后用双引号引起来的列?

shell - 如何在 common lisp 中导航文件系统

linux匹配行号之后的模式直到结束并替换一次

bash - 运行 Mysqldump 时如何将错误消息发送到文件?

string - 变量插值期间的 bash 行连接

bash - 在 Shell 脚本中获取 11 月的第 4 个星期四

linux - 在Linux命令行上将文件移动到匹配的文件夹中