Chinaunix首页 | 论坛 | 博客
  • 博客访问: 234348
  • 博文数量: 95
  • 博客积分: 400
  • 博客等级: 一等列兵
  • 技术积分: 906
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-04 16:04
个人简介

人生意义在于积累,而不是日复一日的重复

文章分类

全部博文(95)

文章存档

2016年(2)

2015年(44)

2014年(35)

2011年(5)

2010年(9)

我的朋友

分类: LINUX

2014-05-15 11:18:32

awk中引入外部变量进行数字比较大小时会出现歧义,单引号与双引号顺序错误会引发比较错误,给如下三个示例
输入文件为input,内容为:
11
21
11
09
23
12
129
212
1024
32
129

示例1:(错误)
x=212
awk -F"\t" '{
    if ($1 > "'"$x"'")
        print $1"\t>\t""'"$x"'";
    else
        print $1"\t<=\t""'"$x"'";
}' input

执行结果:
1 <= 212
21 <= 212
11 <= 212
09 <= 212
23 > 212
12 <= 212
129 <= 212
212 <= 212
1024 <= 212
32 > 212

示例2:(错误)
awk -F"\t" '{
    if ($1 > "'$x'")
        print $1"\t>\t""'"$x"'";
    else
        print $1"\t<=\t""'"$x"'";
}' input

执行结果:
1 <= 212
21 <= 212
11 <= 212
09 <= 212
23 > 212
12 <= 212
129 <= 212
212 <= 212
1024 <= 212
32 > 212

示例3:(正确)
awk -F"\t" '{
    if ($1 > '"$x"')
        print $1"\t>\t""'"$x"'";
    else
        print $1"\t<=\t""'"$x"'";
}' input

执行结果:
1 <= 212
21 <= 212
11 <= 212
09 <= 212
23 <= 212
12 <= 212
129 <= 212
212 <= 212
1024 > 212
32 <= 212

分析:
1.    在引入变量时如果变量使用" ' $var ' " 或者 " ' " $var " ' ",则当前变量会被解释为字符串;
2.    使用' " $var " ',则变量var会以数字的形式进行解释。


阅读(769) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~