在bash中将兆比特转换为千比特

在bash中将兆比特转换为千比特,bash,awk,sed,Bash,Awk,Sed,我有一个文件out.result,其中包含 73.0Mb 69.7Mb 59.8Mb 71.3Mb 59.7Mb 244Kb 我需要将Mb值转换为Kb,即 cat out.result | awk '{ total = $1 * 1000 ; print total }' 但对于已经以Kb为单位的值,也可以这样做 73000 69700 59800 71300 59700 244000 如何解决这个问题?对于您展示的示例,请尝试以下内容 awk ' { val=substr($0,le

我有一个文件out.result,其中包含

73.0Mb
69.7Mb
59.8Mb
71.3Mb
59.7Mb
244Kb
我需要将Mb值转换为Kb,即

cat out.result | awk '{ total = $1 * 1000 ; print total }'
但对于已经以Kb为单位的值,也可以这样做

73000
69700
59800
71300
59700
244000

如何解决这个问题?

对于您展示的示例,请尝试以下内容

awk '
{
  val=substr($0,length($0)-1)
  if(tolower(val)=="mb"){
    $0 *= 1024
  }
}
{
  print $0+0
}' Input_file

删除
b
并使用
numfmt

sed 's/b//' inputfile | numfmt --from=si --to-unit=K

转换不应该是1024吗?@karakfa不,位不以1024的倍数计算。字节有时以1024的倍数计算,打印为1kib,或。
sed 's/b//' inputfile | numfmt --from=si --to-unit=K