如下,部分文字
16G 16G 1.9G 40G
4G 4G 952M 60G
16G 16G 1.6G 40G
5G 780M 5G 80G
我想将所有单位从“M”更改为“G”,如下所示
16G 16G 1.9G 40G
4G 4G 0.92G 60G
16G 16G 1.6G 40G
5G 0.76G 5G 80G
用python可以,但是不知道用shell怎么实现?awk,sed,perl...可以实现吗?
答案1
root@lab7-dl380-11:~/> cat test
16G 754G 457M
346M 77G 654M
root@lab7-dl380-11:~/> awk '{for(i=1;i<=NF;i++)if($i ~ /M/)printf $i/1024 "G\t"; else printf $i "\t"; print ""}' test
16G 754G 0.446289G
0.337891G 77G 0.638672G
您还可以四舍五入到百分位以获得更智能的输出
root@lab7-dl380-11:~/> awk '{for(i=1;i<=NF;i++)if($i ~ /M/)printf int($i/1024*100)/100 "G\t"; else printf $i "\t"; print ""}' test
16G 754G 0.44G
0.33G 77G 0.63G