【Shell案例】【取指定列的方式$5 p[6],双括号运算、awk、管道运算】8、统计所有进程占用内存大小的和
作者:互联网
假设 nowcoder.txt 内容如下:
root 2 0.0 0.0 0 0 ? S 9月25 0:00 [kthreadd]
root 4 0.0 0.0 0 0 ? I< 9月25 0:00 [kworker/0:0H]
web 1638 1.8 1.8 6311352 612400 ? Sl 10月16 21:52 test
web 1639 2.0 1.8 6311352 612401 ? Sl 10月16 21:52 test
tangmiao-pc 5336 0.0 1.4 9100240 238544 ?? S 3:09下午 0:31.70 /Applications
以上内容是通过ps aux | grep -v 'RSS TTY' 命令输出到nowcoder.txt文件下面的
请你写一个脚本计算一下所有进程占用内存大小的和:
方法1:for循环+累加
思路:
取某一列的值,并通过变量的方式累加
确定哪一列是内存占用大小:USER PID %CPU %MEM
确定如何取某一个内容 $3
如何转为整形
定义累加变量let sum=0
#!/bin/bash sum=0 # 每一行寻找第几列的值USER PID %CPU %MEM,即第i行的第3列 # 利用awk直接得到第6个元素的内容 for i in `awk '{print $6}' nowcoder.txt` # 并不是真的打印,而是把值传递给i do ((sum+=$i)) done echo $sum
方法2:while循环
#!/bin/bash sum=0 while read p do arr=($p) ((sum+=arr[5])) done < nowcoder.txt echo $sum
方法3:awk实现结果计算
#!/bin/bash awk 'BEGIN{sum=0}{sum+=$6}END{print sum}' nowcoder.txt
或直接省略BEGIN初始化操作
#!/bin/bash awk '{sum+=$6}END{print sum}' nowcoder.txt
方法4:while循环和awk结合
#!/bin/bash sum=0 while read p do # 管道与awk结合 ((sum+=$(echo $p|awk '{print $6}'))) done < nowcoder.txt echo $sum
标签:bin,Shell,运算,sum,内存大小,awk,nowcoder,txt,bash 来源: https://www.cnblogs.com/liujinhui/p/16217029.html