一个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 '