日期:2014-05-16  浏览次数:20737 次

问个AWK的问题
执行seq 10 | awk 'i=!i'
为什么会输出
1
3
5
7
9

------解决方案--------------------
首先,你要知道 awk '1' 表示的是输出,awk '0' 表示的是不输出
其次,未定义的变量默认值为 0
再次,awk 的脚本每行执行一次

现在看 seq 10 的输出是从 1 到 10,十行。第一行的时候,执行 i=!i,这时候 i=0,!i 就是 1,所以输出 1,第二行,i=1,!i 就是 0,不输出 2,第三行,同第一行,余下略。
------解决方案--------------------
缺省action,默认的行为就是print,然后1为true,0为false,同时变量初值为0,所以就是打印基数行了。