Chinaunix

标题: 想不明白的awk问题 [打印本页]

作者: bluesmile11    时间: 2013-01-07 20:16
标题: 想不明白的awk问题
遇到了一道题目
echo haha | awk '{print '12.23.31'}'
为什么结果会是
12.230.31

求详细介绍。谢谢啦
作者: bluesmile11    时间: 2013-01-07 20:20
在补充一个点
echo haha | awk '{print ''}'  
haha
作者: bluesmile11    时间: 2013-01-07 20:26
求这两个问题的详细解释。谢谢啦
作者: waker    时间: 2013-01-07 20:27
http://bbs.chinaunix.net/forum.p ... &fromuid=467748
作者: UFFO    时间: 2013-01-07 21:53
我的神啊!!!定义域分割!还有输出域的格式问题!
作者: yjwan    时间: 2013-01-09 10:43
print '12.23.31' 中打印的是字符串  ,不是$0 ,所以只打印字符串


下面为什么打印出$0 ,是因为awk默认的规范,如果print 不加参数或者‘’空字符  默认打印$0
甚至写成1   都等效为{print $0}
[root@greggs ~]# echo haha |awk '{print }'
haha
[root@greggs ~]# echo haha |awk '{print ''}'
haha
[root@greggs ~]# echo haha |awk '1'
haha
作者: bluesmile11    时间: 2013-01-09 22:52
谢谢朋友们的讲解啦
作者: murdercool    时间: 2013-01-10 09:03
如果print 不加参数或者‘’空字符  默认打印$0  这个解释貌似太对吧 ,awk中字符串用“”的
下面这个
[root@greggs ~]# echo haha |awk '{print ''}'
haha
是因为单引号就近匹配  echo haha |awk '{print ''}'  解析完是 echo haha |awk {print }  ,print实际上后面没加参数的,所以打印的$0

yjwan 发表于 2013-01-09 10:43
print '12.23.31' 中打印的是字符串  ,不是$0 ,所以只打印字符串

作者: yjwan    时间: 2013-01-10 11:34
你的解释合理些  ,我 awk一般了




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