标签:bin Shell 运算 sum 内存大小 awk nowcoder txt bash
假设 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
本站声明:
1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。