一个awk if 嵌套 if 的脚本

 1 [root@makeISO sjx]# cat sex.sh 
 2 #!/bin/bash
 3 
 4 #    统计如下内容,并输出结果
 5 #    (男职工未婚数量/男员工整体数量)(女员工未婚数量/女员工整体数量)
 6 
 7 echo '姓名    性别    婚否
 8 001    男    已婚
 9 002    男    未婚
10 003    男    未婚
11 004    男    未婚
12 005    女    已婚
13 006    女    未婚
14 007    女    未婚
15 008    女    未婚
16 009    女    未婚
17 010    女    未婚
18 011    女    未婚
19 012    女    未婚'\
20     | sed '1d' \
21     | awk ' \
22         BEGIN    {m=0;mno=0;f=0;fno=0}\
23             {if($2 == "")\
24                 {m+=1;if($3 == "未婚"){mno+=1}}\
25             else\
26                 {f+=1;if($3 == "未婚"){fno+=1}}\
27             }\
28         END    {printf "(男职工未婚数量/男员工整体数量):(%s/%s)\n(女员工未婚数量/女员工整体数量):(%s/%s)\n",mno,m,fno,f}\
29     '
30 [root@makeISO sjx]# sh sex.sh
31 (男职工未婚数量/男员工整体数量):(3/4)
32 (女员工未婚数量/女员工整体数量):(7/8)

 

下面脚本也可以(去掉 sed ,else 换成 else if )

 

 1 #!/bin/bash
 2 
 3 #    统计如下内容,并输出结果
 4 #    (男职工未婚数量/男员工整体数量)(女员工未婚数量/女员工整体数量)
 5 
 6 echo '姓名    性别    婚否
 7 001    男    已婚
 8 002    男    未婚
 9 003    男    未婚
10 004    男    未婚
11 005    女    已婚
12 006    女    未婚
13 007    女    未婚
14 008    女    未婚
15 009    女    未婚
16 010    女    未婚
17 011    女    未婚
18 012    女    未婚'\
19     | awk ' \
20         BEGIN    {m=0;mno=0;f=0;fno=0}\
21             {if($2 == "")\
22                 {m+=1;if($3 == "未婚"){mno+=1}}\
23             else if($2 == "")\
24                 {f+=1;if($3 == "未婚"){fno+=1}}\
25             }\
26         END    {printf "(男职工未婚数量/男员工整体数量):(%s/%s)\n(女员工未婚数量/女员工整体数量):(%s/%s)\n",mno,m,fno,f}\
27     '

 

posted @ 2016-04-30 01:39  三角形  阅读(9012)  评论(0编辑  收藏  举报