我与awk返回代码相混淆...
命令:
cat /etc/redhat-release |awk '{print $3 >= 6.5;}'
结果:1(应该是0或我正在寻找0(
这是我的文件/etc/redhat-release
cat /etc/redhat-release ->
CentOS release 6.5 (Final)
我对此有点困惑...
帮助...!
cat /etc/redhat-release |awk '{print $3 >= 6.5}'
1
cat /etc/redhat-release |awk '{print $3}'
6.5
您的混乱可能源于您从真或错误比较中期望的结果。
摘自《 Gawk手册》;
在尴尬中,任何非零数值或任何非空字符串值都是正确的。任何其他值(零或零字符串"(都是错误的。
换句话说,如果字段不是" 0"或",则是真的。因此,如果您正在寻找(期望(0,则期望比较是错误的。
以下可能有助于您控制比较,但仍然不会使" 0"成为真实比较的结果。
要将字段值强制为数字上下文,您可以添加零或乘以一个。($ 3 0(或($ 3 * 1(与数字值进行比较之前。要将字段值强制到字符串上下文中,您可以与一个空字符串连接。请记住,Awk使用空白空间来连接。($ 3"(
看起来您的意图是在版本(字段3(为> = 6.5时打印整个行。在awk
表达式中,条件应像这样的动作之前(不需要cat ... |
(:
awk '$3 >= 6.5 {print}' /etc/redhat-release
由于打印是默认操作,因此只有 awk '$3 >= 6.5' /etc/redhat-release
就足够了(正如inian指出的那样(。
命令
awk '{print $3 >= 6.5}' /etc/redhat-release
给出1
的输出,这是表达式的值,因为$3 >= 6.5
评估为true。