免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2554 | 回复: 5

awk疑问[已解决] [复制链接]

论坛徽章:
0
发表于 2009-01-19 19:17 |显示全部楼层
>>cat input.file
10| 2
30| 3
10| 4
20| 7

>>awk '$2=" ";1' input.file
10|  
10|  
30|  
30|  
10|  
10|  
20|  
20|

>>awk '$2="";1' input.file
10|
30|
10|
20|

为什么会这样?

谢谢!

[ 本帖最后由 roong 于 2009-1-20 08:11 编辑 ]

论坛徽章:
0
发表于 2009-01-19 21:55 |显示全部楼层
我这边的awk这样用直接就报错了

你的估计是linux下的awk

使用
/usr/xpg4/bin/awk的话,上面两个命令的结果是一样的

论坛徽章:
3
戌狗
日期:2014-09-10 17:07:162015年辞旧岁徽章
日期:2015-03-03 16:54:15wusuopu
日期:2016-06-17 17:43:45
发表于 2009-01-19 23:10 |显示全部楼层
原帖由 roong 于 2009-1-19 19:17 发表
>>cat input.file
10| 2
30| 3
10| 4
20| 7

>>awk '$2=" ";1' input.file
10|  
10|  
30|  
30|  
10|  
10|  
20|  
20|

>>awk '$2="";1' input.file
10|
30|
10|
20|

为什 ...

$2=value;是$=value{print}的缩写,判断$2的值,真则执行print.
""和0为假

论坛徽章:
11
金牛座
日期:2015-03-19 16:56:22数据库技术版块每日发帖之星
日期:2016-08-02 06:20:00数据库技术版块每日发帖之星
日期:2016-04-24 06:20:00数据库技术版块每日发帖之星
日期:2016-04-13 06:20:00IT运维版块每日发帖之星
日期:2016-04-13 06:20:00数据库技术版块每日发帖之星
日期:2016-02-03 06:20:00数据库技术版块每日发帖之星
日期:2015-08-06 06:20:00季节之章:春
日期:2015-03-27 15:54:57羊年新春福章
日期:2015-03-27 15:54:37戌狗
日期:2015-03-19 16:56:41数据库技术版块每日发帖之星
日期:2016-08-18 06:20:00
发表于 2009-01-19 23:23 |显示全部楼层

=是赋值....
awk中的假为取值为 0 或者 空值.. .

论坛徽章:
0
发表于 2009-01-20 01:51 |显示全部楼层
原帖由 roong 于 2009-1-19 19:17 发表
>>cat input.file
10| 2
30| 3
10| 4
20| 7

>>awk '$2=" ";1' input.file
10|  
10|  
30|  
30|  
10|  
10|  
20|  
20|

>>awk '$2="";1' input.file
10|
30|
10|
20|

为什 ...


awk '$2=" ";1' input.file
等效于:
awk '($2=" "){print $0}
(1){print $0}' input.file
每行会执行两次条件判断,活动为全部缺省的print $0;
第1次的条件是赋值的结果,为" ",非空字符串,值为0.
有的系统当值非零或字符串非空时均作为条件真来处理,这时为真(楼主的系统认为值为0的非空字符串为条件真,我的系统也是).
也可能有的系统只认数值非0才是条件真,这时就是假了.
如果你的awk版本认为非空字符串为逻辑真时,两个条件均为恒真,所有行均被两次用缺省活动分别打印两次.
如果你的awk版本认为只有非0数值表达式才是逻辑真时,第1条件均为恒假,第2个条件为恒真.所有行被第2个条件对应的缺省活动打印1次.

awk '$2="";1' input.file
等效于:
awk '($2=""){print $0}
(1){print $0}' input.file
条件为空字符时,一定为逻辑假,第1个条件不成立,第2个条件恒为真.所有行被第2个条件对应的缺省活动打印1次.

[ 本帖最后由 zhangshebao 于 2009-1-20 01:56 编辑 ]

论坛徽章:
0
发表于 2009-01-20 08:11 |显示全部楼层
To welcome008  andy  暗夜星空 zhangshebao

非常感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP