shell脚本中给awk命令传参方法

awk命令是一种很方便的字段截取工具,然而在编写shell脚本中,给awk命令传入参数却有着严格的格式,博主经过多次测试,才找到给awk命令传参的方法:

如以下脚本:

#!/bin/bash
##处理脚本
#################
i=$1
echo ----------------开始 $i --------------------------
    for (( j = $[$i+1]; j <= 9990; j++ ))
        do
                sum_tot=0
                sum_sam=0
            for (( k = 2; k <= 21427; k++ ))
                do
                line1=`cat hebing.txt|awk "NR==$i{print}"|awk -F "," '{print $'$k'}'`
                #取出第i行第K个位置的数据,$k必须加单引号声明,否则shell无法识别            
               
               line2=`cat hebing.txt|awk "NR==$j{print}"|awk -F "," '{print $'$k'}'`
                #取出第j行第K个位置的数据
                if [ -z "$line1" -a -z "$line2" ] ;then
                    continue;
                elif [ "$line1" == "$line2" ];then
                    sum_sam=$[$sum_sam+1]
                    sum_tot=$[$sum_tot+1]
                else
                    sum_tot=$[$sum_tot+1]
                fi
            done
                #根据第i行与第j行相同的字段条目进行取值
                 bizhi=$[$sum_sam*100/$sum_tot]
                  if [ $bizhi -lt 80 -a $bizhi -ge 50 ];then
                    echo $i"|"$j"|"$sum_sam"|"$sum_tot"|"$bizhi >>bizhi_50_80.txt
                  elif [ $bizhi -lt 100 -a $bizhi -ge 80 ];then
                    echo $i"|"$j"|"$sum_sam"|"$sum_tot"|"$bizhi >>bizhi_80_100.txt
                  elif [ $bizhi -eq 100 ];then
                    echo $i"|"$j"|"$sum_sam"|"$sum_tot"|"$bizhi >>bizhi_100.txt
                  fi

            
        done
echo  ------------执行完毕 $i---------------

猜你喜欢

转载自blog.csdn.net/zcb_data/article/details/80533574
今日推荐