bash – 方便解析带有单位后缀的数字?

前端之家收集整理的这篇文章主要介绍了bash – 方便解析带有单位后缀的数字?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设您拥有人类可读格式的数据,例如du -h的输出,并希望进一步对这些数字进行操作.假设您希望通过grep管理数据,以对该数据的子集进行求和.您可以在以前从未见过的许多系统上临时执行此操作,并且只使用最少的实用程序.您需要所有标准10 ^ n后缀的后缀转换.

是否存在gnu-linux实用程序将后缀数字转换为管道中的实数?你有一个bash函数来做这个,或者一些可能容易记住的perl,而不是一段正则表达式替换或几个sed步骤?

38M     /var/crazyface/courses/200909-90147
2.7M    /var/crazyface/courses/200909-90157
1.1M    /var/crazyface/courses/200909-90159
385M    /var/crazyface/courses/200909-90161
1.3M    /var/crazyface/courses/200909-90169
376M    /var/crazyface/courses/200907-90171
8.0K    /var/crazyface/courses/200907-90173
668K    /var/crazyface/courses/200907-90175
564M    /var/crazyface/courses/200907-90178
4.0K    /var/crazyface/courses/200907-90179

| grep 200907 | <惊人的后缀转换> | awk'{s = $1} END {print s}’

相关参考文献:

> How can I sort du -h output by size
> https://stackoverflow.com/questions/2557649/convert-memory-size-human-readable-into-actual-number-bytes-in-perl

基于我在以下一个问题上的回答:
awk '{
    ex = index("KMGTPEZY",substr($1,length($1)))
    val = substr($1,length($1) - 1)

    prod = val * 10^(ex * 3)

    sum += prod
}
END {print sum}'

使用的另一种方法

sed 's/G/ * 1000 M/;s/M/ * 1000 K/;s/K/ * 1000/; s/$/ +\\/; $a0' | bc

猜你在找的Bash相关文章