awk中引用shell的变量

在awk中引用shell的变量有两种办法:

  1. 一个是用双引号和单引号包含变量,如:"'var'";
  2. 另为一种就是使用awk的-v参数提前声明,如:awk -v var="$var";

例如:

$ cat text.txt
a,1
a,2
b,3
b,4
c,2
d,5
$ for i in `cat text.txt |cut -d, -f1|sort|uniq`
> do 
> grep -E ^$i text.txt |awk -F ',' '{sum+=$2} \
              END {print "'$i'" " Count: " NR ", Sum: " sum ", Average: " sum/NR}'
> done
a Count: 2, Sum: 3, Average: 1.5
b Count: 2, Sum: 7, Average: 3.5
c Count: 1, Sum: 2, Average: 2
d Count: 1, Sum: 5, Average: 5
$ #or
$ for i in `cat text.txt |cut -d, -f1|sort|uniq`
> do
> grep -E ^$i text.txt |awk -v i="$i" -F ',' '{sum+=$2} \
              END {print i " Count: " NR ", Sum: " sum ", Average: " sum/NR}'
> done

results matching ""

    No results matching ""