Linux之awk学习

 

#这个实例计算在命令行上指定的某个文件中的每一列数字的总和。

if (test $# = 0)then
    echo "you must apply a number."
    exit 1
fi
cat $1 | awk ' NR == 1 # awk < $1
        {
            nfields = NF #set nfields to number of fields in the record (NF)
        }

{
    if($0 ~ /[^0-9. \t]/) #check each record to see if it contains any characters are not numbers.
    { #periods.spaces.or tabs
        printf "it is not a number record\t " $0
        printf "\n"

    }
    else
    {
        for(count = 1;count <= nfields;count ++) #for good records loop
        {
            printf "%10.2f",$count > "out"
            sum[count] += $count
            gtotal += $count
        }
        print "\n" > "out"
    }
}
END {

        for(count = 1;count <= nfields;count++)
        {
            printf " -------" > "out"
        }
        print "\n" > "out"
        for(count = 1;count <= nfields;count++)
        {
            printf"%10.2f",sum[count] > "out"
        }
        print "\n\n Grand Total" gtotal "\n" > "out"
     }
'

原文地址:https://www.cnblogs.com/benshan/p/2585399.html