免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 82573 | 回复: 19

awk中!$NF是啥意思? [复制链接]

论坛徽章:
0
发表于 2010-03-25 12:17 |显示全部楼层
测试文件uu内容如下
1 q
2
3
4 e
5


awk '$NF{print $0}' uu结果为
1 q
2
3
4 e
5


awk '!$NF{print $0}' uu
运行结果为空


但是我用
awk '!$2{print $0}' uu结果为
2
3
5

用$NF和$2为什么不一样?



awk '{print $NF;}' uu
q
2
3
e
5
[root@localhost opt]# awk '{print NF;}' uu
2
1
1
2
1

论坛徽章:
0
发表于 2010-03-25 12:31 |显示全部楼层
结果很正常阿

{}大括号前面如果为真就执行大括号里的内容,为假就不执行

$NF是最后一个域的内容
$2是第二个域的内容

当然可能不一样了

论坛徽章:
0
发表于 2010-03-25 12:34 |显示全部楼层
awk '!$2{print $0}' uu
是输出第2个字段是空值的对吧?


awk '!$NF{print $0}' uu
是输出最后一个字段为空值的对吧?

那为什么用!$NF无法输出第2个字段作为最后一个字段,且为空值的行呢?

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
发表于 2010-03-25 12:37 |显示全部楼层
本帖最后由 Shell_HAT 于 2010-03-25 13:09 编辑

第2个字段作为最后一个字段,且为空值的行的时候,第1个字段才是最后一个字段。

论坛徽章:
0
发表于 2010-03-25 12:47 |显示全部楼层
#打印所有非空行
awk '$NF{print $0}' uu

#打印所有空行
awk '!$NF{print $0}' uu
还是有点用的,比如统计uu里空行的数量 awk '$NF{print $0}' uu|wc -l

论坛徽章:
0
发表于 2010-03-25 12:54 |显示全部楼层
本帖最后由 sunbw001 于 2010-03-25 12:57 编辑

回复 1# laohuanggua


    file    NF    $NF
    1  a     2     a
    2        1     2
    3        1     3
    4  b     2     b
    5        1     5

!$NF 总是假 只有空行时才为真

论坛徽章:
0
发表于 2010-03-25 13:14 |显示全部楼层
回复 3# laohuanggua


    我觉得是被迷惑了。当行为 1 q 的时候$2等于NF,当行仅为1的时候。$1等于NF。所以无论怎么样,NF都是存在的。所以你!NF时候输出,那只能有记录的话就不会输出的
而你!$2时输出,当1 的时候显然是没有$2的

论坛徽章:
0
发表于 2010-03-25 13:23 |显示全部楼层
本帖最后由 fllintel 于 2010-03-25 13:24 编辑

$NF 这个值永远存在 所以!$NF 永远为假.
当$2 没有的时候 !$2 是为真的.
PS. 终于登陆进来了 前几天不知道为什么登都登不进. 只能眼睁睁的看着 不能说话!

论坛徽章:
0
发表于 2010-03-25 14:47 |显示全部楼层
明白了。只要是非空行,(必须是彻底的非空行!空格和tab都认为是内容!)就可以用 awk '$NF' uu来输出

如果要过滤掉没有内容的行(包含空白字符的)
要用

awk '$0 !~ /^[[:space:]]*$/{print $0;}' uu

论坛徽章:
0
发表于 2010-03-25 14:49 |显示全部楼层
回复 9# laohuanggua


    感觉LZ不像是新手啊~怎么才挣1K多?我们公司做测试都差不多3K呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP