使用1024的awk打印除法值的shell脚本

nav*_*sfx 2 bash shell awk

我正在尝试对awk输出过程进行一些人为操作。我的示例文件包含字符串,它是计数。现在,我正在尝试将计数值设置为MB格式(默认计数将以字节为单位。)

示例:myfile.txt

   a 123455
   b 34455566
   c 10394934839
   d 102445555
Run Code Online (Sandbox Code Playgroud)

我的脚本:

  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
Run Code Online (Sandbox Code Playgroud)

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

不知道如何实现这一目标。

anu*_*ava 6

您可以直接进行操作awk而无需循环BASH

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

或2小数点输出:

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


dam*_*ois 3

你可以这样做(纯 Bash):

$ cat myfile.txt | while read l f ; do echo $l $((f/1024/1024)) ;if [ $((f/1024/1024)) -gt 
1024 ] ; then echo "$l value in critical ";fi done
a 0
b 32
c 9913
c value in critical 
d 97
Run Code Online (Sandbox Code Playgroud)