免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2245 | 回复: 3
打印 上一主题 下一主题

求助,如何将参数传递至awk [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-06 11:44 |只看该作者 |倒序浏览
已知文档内容如下,其中第一行为标题
USER        PID %CPU %MEM   SZ  RSS    TTY STAT    STIME  TIME COMMAND
root      17216  2.9  0.0  384  384      - A      Oct 15 34524:22 wait
root      16948  2.8  0.0  384  384      - A      Oct 15 33719:57 wait
ecisrv   279310  2.1  0.0 5272 5288      - A    09:29:11  0:01 find -L /home/ap
patrol   319594  0.1  0.0 29536 30132      - A      Dec 01 59:44 PatrolAgent -p 3
ecisrv   254570  0.0  1.0 49660 49444      - A      Nov 27 76:45 FileMonitor -m 2
patrol   181076  0.0  0.0 3724 3772      - A      Dec 01  9:46 /home/ap/patrol/
ecisrv   278954  0.0  0.0 5656 5412      - A    09:08:30  0:01 CUST_SIGN_INFO 2
root     541062  0.0  0.0 3768 4020      - A    16:00:01  0:50 /home/sfuser/sfm
ecimon   225708  0.0  0.0  740  788      - A      Oct 15 54:23 sh /home/ap/ecis
ecisrv   439154  0.0  0.0 5656 5412      - A    09:06:30  0:01 CUST_SIGN_INFO 2
odsclt    82424  0.0  0.0  692  740      - A      Oct 15 25:51 sh ./PGFMonitor.
root      50082  0.0  0.0 26936 28336      - A      Oct 15 23:08 /home/ap/opsware
patrol   434218  0.0  0.0 4316 4392      - A      Dec 01  1:33 /home/ap/patrol/
root     139752  0.0  0.0 1424 5800      - A      Oct 15 13:10 /opt/rsct/lapi/p
root       4386  0.0  0.0  448  448      - A      Oct 15 12:14 swapper
root      49176  0.0  0.0  448  448      - A      Oct 15 11:31 xmgc
root          0  0.0  0.0  384  384      - A      Oct 15  7:47 swapper
ecisrv   147542  0.0  0.0 1312 1348      - A      Oct 15  7:45 dptfrcv
root       4922  0.0  0.0  448  448      - A      Oct 15  7:04 swapper
ecisrv   111516  0.0  0.0  720  728      - A      Oct 15  6:06 dptfautoresume
odsclt    98420  0.0  0.0 1232 1340      - A      Oct 15  2:11 udisfts: (accept
root     102674  0.0  0.0 3084 3572      - A      Oct 15  2:09 /usr/sbin/rsct/b
patrol   287278  0.0  0.0  860  884      - A      Dec 01  0:10 /home/ap/patrol/
ecisrv   127064  0.0  0.0 1944 1884      - A      Oct 15  1:12 CLogDaemon -msg_
root     123172  0.0  0.0  664  768      - A      Oct 15  1:02 /usr/sbin/sshd
patrol    99142  0.0  0.0  580  592      - A      Dec 01  0:00 /home/ap/patrol/
sfmon    520260  0.0  0.0  736  784 pts/10 A    08:16:48  0:00 -ksh
ecisrv   377822  0.0  0.0 5480 5256      - A    09:28:02  0:00 N1040 20111206 N
ecisrv   492358  0.0  0.0 3884 3660      - A    09:29:00  0:00 N1040 20111206 N
ecimon   496576  0.0  0.0  148  152      - A    09:29:08  0:00 sleep 30
patrol   442380  0.0  0.0  740  788  pts/0 A      Dec 01  0:00 -ksh
ecisrv   426972  0.0  0.0 5012 4420      - A    09:05:03  0:00 Scheduler -p 660
patrol   491568  0.0  0.0  676  724      - A      Dec 01  0:00 /usr/bin/ksh
ecisrv   472022  0.0  0.0 7220 6820      - A    09:29:10  0:00 Scheduler -p 660
ecisrv   312182  0.0  0.0 4468 3940      - A    09:05:02  0:00 Scheduler -p 660
patrol   168880  0.0  0.0  676  724      - A    18:13:16  0:00 /usr/bin/ksh
root      32784  0.0  0.0  448  448      - A      Oct 15  0:00 memp_rbd
ecisrv   185256  0.0  0.0 5144 4488      - A    09:05:04  0:00 Scheduler -p 660
root      36882  0.0  0.0  448  448      - A      Oct 15  0:00 memgrdd
sfmon    307248  0.0  0.0  584  612 pts/10 A    09:29:14  0:00 ps aux
ecisrv   148306  0.0  0.0  116  120      - A    09:28:57  0:00 sleep 600
root      24588  0.0  0.0 1024 1024      - A      Oct 15  0:00 psmd
root      20490  0.0  0.0  448  448      - A      Oct 15  0:00 vmptacrt
ecisrv   300000  0.0  0.0 4832 4112      - A    09:29:04  0:00 Scheduler -p 660
ecisrv   417932  0.0  0.0  700  748      - A    09:28:42  0:00 sh -c udi_ods_to
ecisrv   246612  0.0  0.0 3840 3672      - A    09:28:55  0:00 N1010_pre 201112

现在要编写一个脚本,实现将第三列内容按用户求和功能,脚本如下

#!/bin/sh
##################################
#脚本名称:CPUCHK_ECIFP_AP04_CPU_res.sh           #
#作者:ZQC                                                                  #
#功能:应用用户CPU使用率                             #
#复核人:                                                                      #
#日期:2011/12/05                                                       #
##################################

ps aux > cpu.out
for v_u in `awk '{ print $1}' cpu.out |sort -u |sed '1,1d'`
do
v_cpu_idle_sum=0;
for v_cpu in `awk '{if ($1 == $v_u) print $3}' cpu.out`
do
        v_cpu_idle_sum=$v_cpu_idle_sum+$v_cpu
done
v_result=`echo $v_cpu_idle_sum |bc -l `
echo $v_u ": CPU IS " $v_result
done

其中v_u的参数无法获取对应的值,不知道应该如何将参数传递到awk里,请高手支招,或者给出更好的写法,多谢多谢!

论坛徽章:
0
2 [报告]
发表于 2011-12-06 12:48 |只看该作者
ps aux|awk 'NR!=1{a[$1]+=$3}END{for(i in a)print i" CPU IS "a[i]}'

论坛徽章:
0
3 [报告]
发表于 2011-12-06 13:35 |只看该作者
回复 2# where27


    多谢兄弟,我去测试一下。

论坛徽章:
0
4 [报告]
发表于 2011-12-06 14:06 |只看该作者
回复 2# where27


    ,太牛了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP