如何使用awk、sed修改文本?

如何使用awk、sed修改文本?

如下,部分文字

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

相关内容