当前位置: 技术问答>linux和unix
awk关于BEGIN用法
来源: 互联网 发布时间:2017-02-05
本文导语: 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去掉就是对的呢...
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到底该怎么用呢 请大家指教 多谢.
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,这些都没用
所以,再没读入文件之前,%0,这些都没用
|
BEGIN在一切内容处理之前执行,这时候$0应该是啥?啥也没有。
你后改的那个,是自己已经给出值了,不是从$0取的,所以出结果了。
你后改的那个,是自己已经给出值了,不是从$0取的,所以出结果了。