linux awk 变量赋值和比较

请问前辈一下三句有什么不同

  1. awk -F: 'BEGIN{sx=3199; print sx} {if($3==3199) print $1} END{print "End"}' passwd

2.
sx=3199
awk -F: 'BEGIN{print $sx} {if($3==$sx) print $1} END{print "End"}' passwd
3. awk -F: 'BEGIN{sx=3199; print sx} {if($3==sx) print $1} END{print "End"}' passwd

1 输出
3199
nscc3199
End
2 输出
(空一行)
(空一行)
End
3 输出
3199
(空一行)
End

为什么呀?大神,各位大神指导一下,解释一下原因。因为我以为这3句是同样的结果才对!!!

//引用变量的时候要加$,所以1是对的,3是错的
awk -F: 'BEGIN{sx=3199; print sx} {if($3==sx) print $1} END{print "End"}' passwd
//第2个,引用外部的变量,需要用-v引进来到awk中,

这里有一个awk的简明教程,可以看看
http://blog.csdn.net/havedream_one/article/details/45007431

你外面的变量,要传递

http://blog.jobbole.com/92430/