Shell
如何使用 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… 可以嗎?
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