请教关于awk的一个循环问题(已完成)

sh/bash/dash/ksh/zsh等Shell脚本
头像
wuy069
帖子: 91
注册时间: 2011-05-02 11:00

Re: 请教关于awk的一个循环问题

#16

帖子 wuy069 » 2012-12-18 10:35

bones7456 写了:
wuy069 写了:
bones7456 写了:

代码: 全选

$ awk '/lx26-/{node++;print node,$0}' /tmp/1 
1  compute-0-0             lx26-amd64      4  4.68    3.9G    3.5G    4.0G    2.9G
2  compute-0-1             lx26-amd64      4  3.26    3.9G    4.2G    4.0G    3.1G
3  compute-0-2             lx26-amd64      4     -    4.1G       -    4.0G       -
4  compute-0-3             lx26-amd64      4  0.03    3.9G    2.3G    4.0G     0.0
5  compute-0-4             lx26-amd64     12  1.02    3.9G    1.5G    4.0G     0.0
6  compute-0-5             lx26-amd64      4  4.68    3.9G    3.5G    4.0G    2.9G
拿这个,加上你的“相关的处理”,应该可以搞定了吧?
你这个明显不行;

我是要做awk的循环,每次是输出节点和任务的信息;你这个只是输出了节点,相应的节点任务并没有输出
你看我10楼的。
嗯,看清楚了,谢谢!但是那jobidlist即最后一个输出的有问题,我再看看;能否也帮我想下,谢谢!
头像
wuy069
帖子: 91
注册时间: 2011-05-02 11:00

Re: 请教关于awk的一个循环问题

#17

帖子 wuy069 » 2012-12-18 10:53

bones7456 写了:
wuy069 写了:
bones7456 写了:拿这个,加上你的“相关的处理”,应该可以搞定了吧?
你这个明显不行;

我是要做awk的循环,每次是输出节点和任务的信息;你这个只是输出了节点,相应的节点任务并没有输出
你看我10楼的。
正确的输出是,

代码: 全选

compute-0-0    free     4.68*     4     3.9G     3.5G     4.0G    2.9G     3     6/wuy 7/wuy
compute-0-1    excl     3.26*     4     3.9G     4.2G*    4.0G    3.1G     4     8/tester 9/tester
compute-0-2    down        -      4     4.1G        -     4.0G       -     0                
compute-0-3    free     0.03      4     3.9G     2.3G     4.0G     0.0     0                
compute-0-4    free     1.02     12     3.9G     1.5G     4.0G     0.0     1     10/wuy     
compute-0-5    free     4.68*     4     3.9G     3.5G     4.0G    2.9G     3     11/wuy 12/wuy
你在里面插入的p(),function p()我不熟悉,这样对于整个的理解就跟不上;按你加入的代码,输出的是,

代码: 全选

compute-0-0    free     4.68*     4     3.9G     3.5G     4.0G    2.9G     3     6/wuy 7/wuy
compute-0-1    excl     3.26*     4     3.9G     4.2G*    4.0G    3.1G     4     6/wuy 7/wuy 8/tester 9/tester
compute-0-2    down        -      4     4.1G        -     4.0G       -     0     6/wuy 7/wuy 8/tester 9/tester
compute-0-3    free     0.03      4     3.9G     2.3G     4.0G     0.0     0     6/wuy 7/wuy 8/tester 9/tester
compute-0-4    free     1.02     12     3.9G     1.5G     4.0G     0.0     1     6/wuy 7/wuy 8/tester 9/tester 10/wuy
compute-0-5    free     4.68*     4     3.9G     3.5G     4.0G    2.9G     3     6/wuy 7/wuy 8/tester 9/tester 10/wuy 11/wuy 12/wuy
后面的jobidlist显示错了。
头像
bones7456
帖子: 8495
注册时间: 2006-04-12 20:05
来自: 杭州
联系:

Re: 请教关于awk的一个循环问题

#18

帖子 bones7456 » 2012-12-18 13:17

在 NF==8 那里把 jobidlist 初始化成空就好了。其实可以把 [node] 都拿掉,不需要数组的。
关注我的blog: ε==3
头像
wuy069
帖子: 91
注册时间: 2011-05-02 11:00

Re: 请教关于awk的一个循环问题

#19

帖子 wuy069 » 2012-12-18 14:18

bones7456 写了:在 NF==8 那里把 jobidlist 初始化成空就好了。其实可以把 [node] 都拿掉,不需要数组的。
:em38
非常感谢!Thank you very much!
cao627
帖子: 992
注册时间: 2007-12-05 10:57
系统: ubuntu14.04
来自: 金山

Re: 请教关于awk的一个循环问题(已完成)

#20

帖子 cao627 » 2012-12-18 21:03

代码: 全选

cat qhost  | awk '/lx26-/{print "#"$0}/@/{if(NF>2){print $1"/"$4};if(NF<=2){print $1}}' | awk  'BEGIN{RS="#";FS="\n"}{if(NF>0)print $1,$2,$3,$4,$5,$6}' | awk 'BEGIN{OFS="\t"}{print $1,$4,$3,$5,$6,$7,$8,NF-8,$9 " " $10 " " $11}' | sed 's/all.q@comp//'
cao627
帖子: 992
注册时间: 2007-12-05 10:57
系统: ubuntu14.04
来自: 金山

Re: 请教关于awk的一个循环问题(已完成)

#21

帖子 cao627 » 2012-12-18 21:51

代码: 全选

cat qhost  | awk '/lx26-/{print "#"$0}/@/{if(NF>2){print $1"/"$4};if(NF<=2){print $1}}' 
经过以上命令以后问题简化为

代码: 全选

xxaxx 4
xbx
xbx
xx
xax   3
xbx
xx
xx
xx
其中x为任意个任意的不阔a和b和空格的字符
包含a的行的行数有许多
包含a的行的后续的不包含a的行的行数为任意,其中包含b的行的也任意





如何做到打印:
包含a的行 +根据包含a的行的后续行的行数与包含a的行上的第二个字段的数值对比的吗结果的不同打印不同的一段字符 +后续行的每一行但不包含b的行不打印


即如上文件如何实现这样排版:

xxaxx 4 大 xbx xbx #由于由于4比后续的行数3大

xax 3 小 xbx
头像
wuy069
帖子: 91
注册时间: 2011-05-02 11:00

Re: 请教关于awk的一个循环问题(已完成)

#22

帖子 wuy069 » 2012-12-19 8:27

cao627 写了:

代码: 全选

cat qhost  | awk '/lx26-/{print "#"$0}/@/{if(NF>2){print $1"/"$4};if(NF<=2){print $1}}' 
经过以上命令以后问题简化为

代码: 全选

xxaxx 4
xbx
xbx
xx
xax   3
xbx
xx
xx
xx
其中x为任意个任意的不阔a和b和空格的字符
包含a的行的行数有许多
包含a的行的后续的不包含a的行的行数为任意,其中包含b的行的也任意





如何做到打印:
包含a的行 +根据包含a的行的后续行的行数与包含a的行上的第二个字段的数值对比的吗结果的不同打印不同的一段字符 +后续行的每一行但不包含b的行不打印


即如上文件如何实现这样排版:

xxaxx 4 大 xbx xbx #由于由于4比后续的行数3大

xax 3 小 xbx
学习了,非常感谢!
回复