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

awk关于BEGIN用法
shell> _str=123#456#789
shell> echo $_str | awk 'BEGIN{split($0, team, "#")}END{print team[3]}'
输出内容为空
而这样写:
echo $_str | awk '{split($0, team, "#")}END{print team[3]}'
输出内容为:789 是对的 

问题:
为什么把BEGIN去掉就是对的呢? BEGIN难道没执行split($0, team, "#")这个操作么? BEGIN到底该怎么用呢 请大家指教 多谢.

------解决方案--------------------
BEGIN是还没读入任何文件之前的操作。

所以,再没读入文件之前,%0,这些都没用
------解决方案--------------------
BEGIN在一切内容处理之前执行,这时候$0应该是啥?啥也没有。
你后改的那个,是自己已经给出值了,不是从$0取的,所以出结果了。