使用awk查找并替换字符串并根据字符串进行计算

使用awk查找并替换字符串并根据字符串进行计算

我有一个 3 列的表格文件

 5565 35824 58.8 
 5713 67404 94.1 
 5716 64456 94.1 
 5718 60492 94.1
 5724 57588 88.2
 5718 844188 75.0
 5757 903388 75.0 
 5724 871828 68.8
 5565 1.0g 43.8
 5565 1.3g 37.5
 5718 878060 6.2

中间一列是以 KB 为单位的内存(来自top命令的 RSS 列)。

我想将以 GB 表示的条目(例如1.0g)转换为以 KB 表示的等效数字,或1.0g转换为1000000.我不确定如何使用awk等效的计算值查找和替换这些条目。

答案1

以下awk命令应该执行:

awk 'sub(/g$/,"",$2) {$2=1000000*$2}1' input.txt

这将通过尝试用“nothing”替换尾随来检查第二列 ( $2) 是否以小写结尾(从而将字段减少为仅数字值)。如果成功(即 的返回值,即执行的成功替换的次数,非零),它将将该字段值乘以 1000000。ggsub()

尾部1指示awk打印所有行,包括所做的任何修改。

相关内容