Chinaunix

标题: shell基础9中awk脚本执行问题 [打印本页]

作者: godsad    时间: 2014-02-16 16:58
标题: shell基础9中awk脚本执行问题
为啥加了单列求和会自动输出$0?

测试样本
  1. cat grade.txt
  2. M.Tans 5/99 48311 Green 8 40 44
  3. J.Lulu 06/99 48317 green 9 24 26
  4. P.Bunny 02/99 48 Yellow 12 35 28
  5. J.Troll 07/99 4842 Brown-3 12 26 26
  6. L.Tansl 05/99 4712 Brown-2 12 30 28
复制代码
脚本2
  1. #!/bin/awk -f
  2. BEGIN {print "aaa\n"}
  3. (aa+=$6)
  4. END{print aa"bbb"}

  5. 执行结果:
  6. ./awktest2 grade.txt
  7. aaa

  8. M.Tans 5/99 48311 Green 8 40 44  [color=Red]#脚本里并没有加print $0,但是却输出了.去除(aa+=$6)就不会输出,这是什么规则?[/color]
  9. J.Lulu 06/99 48317 green 9 24 26
  10. P.Bunny 02/99 48 Yellow 12 35 28
  11. J.Troll 07/99 4842 Brown-3 12 26 26
  12. L.Tansl 05/99 4712 Brown-2 12 30 28
  13. 155bbb
复制代码

作者: rdcwayx    时间: 2014-02-16 17:43
大于符号和括号不能混用
  1. (aa+=$6)
复制代码
要改成
  1. {aa+=$6}
复制代码

作者: yestreenstars    时间: 2014-02-16 23:53
(aa+=$6)-->{aa+=$6}
作者: godsad    时间: 2014-02-17 10:06
本帖最后由 godsad 于 2014-02-17 10:17 编辑

感谢版主和yestreenstars的热心帮助

附带个完整版的
  1. #!/bin/awk -f
  2. BEGIN {print "aaa\n"}
  3. {aa+=$6;print $0}
  4. END{print aa"bbb"}
复制代码
小发现也留个备档.与上面的脚本等价.直观结论是换行 == ;
  1. #!/bin/awk -f
  2. BEGIN {print "aaa\n"}
  3. {aa+=$6
  4. print $0}
  5. END{print aa"bbb"}
复制代码

作者: rogantianwz    时间: 2014-02-17 17:51
哟西,估计我也犯这个错误




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2