【发布时间】:2014-12-24 15:26:48
【问题描述】:
所以我试图在 linux 中分析非常大的日志文件,我已经看到了很多与之相反的解决方案,但是记录数据的程序不允许输出格式,因此它只能以人类可读的格式输出(我知道,多么痛苦)。所以问题是:如何使用 awk 之类的东西将人类可读转换为字节:
所以转换这个:
937
1.43K
120.3M
到:
937
1464
126143693
我负担得起,但预计会出现一些舍入误差。
提前致谢。
附:只要它可以提供内联转换,就不必是 awk。
我找到了this,但给出的 awk 命令似乎无法正常工作。它输出类似 534K"0" 的内容。
我还找到了使用 sed 和 bc 的解决方案,但由于它使用 bc,因此效果有限,这意味着它一次只能使用一列,并且所有数据都必须适合 bc,否则会失败。
sed -e 's/K/\*1024/g' -e 's/M/\*1048576/g' -e 's/G/\*1073741824/g' | bc
【问题讨论】:
-
@amdn,谢谢我实际上找到了类似的东西并进行了编辑。该解决方案的唯一问题是它使用 bc,因此它不能很好地分析完整的日志文件。它可以处理同一类型的单列数据。
-
在该答案的底部有一个不使用 bc 的“一个衬里”
标签: linux bash awk human-readable