ITPub博客

首页 > Linux操作系统 > Linux操作系统 > [Shell] awk NR,FNR,NF

[Shell] awk NR,FNR,NF

原创 Linux操作系统 作者:tolilong 时间:2016-03-31 12:42:15 0 删除 编辑
NR: 已经读出的记录数
FNR:当前文件的记录数
NF:当前记录中的字段(列,域)个数


[/tmp/test]# cat tt1
50 IT                                         China            800 
10 ACCOUNTING                                 LA               1100
20 RESEARCH                                   DALLAS           560
30 SALES                                      CHICAGO          2800
40 OPERATIONS                                 BOSTON           5500
10 DEVELOPER                                  HOSTON           1300
[/tmp/test]# cat tt7
a1 b1 a1 c1 a1a b1 b1 c1 a1a b1 a1 b1
a1 b1 a1 c1 a1a b1 b1 c1 a1a b1 a1 b1

[/tmp/test]# awk '{print NR,FNR,$0}' tt1 tt7
1 1 50 IT                                         China            800 
2 2 10 ACCOUNTING                                 LA               1100
3 3 20 RESEARCH                                   DALLAS           560
4 4 30 SALES                                      CHICAGO          2800
5 5 40 OPERATIONS                                 BOSTON           5500
6 6 10 DEVELOPER                                  HOSTON           1300
7 1 a1 b1 a1 c1 a1a b1 b1 c1 a1a b1 a1 b1
8 2 a1 b1 a1 c1 a1a b1 b1 c1 a1a b1 a1 b1

[/tmp/test]# awk '{print NF}' tt7
12
12

统计文件字符数出现的次数(论坛上看到的,自己测试一下)
[/tmp/test]# cat tt7
a1 b1 a1 c1 a1a b1 b1 c1 a1a b1 a1 b1
a1 b1 a1 c1 a1a b1 b1 c1 a1a b1 a1 b1

[/tmp/test]# awk '{for(i=1;i<=NF;i++)a[$i]++}END{for(i in a)print i"="a[i]}' tt7
a1=6
c1=4
a1a=4
b1=10
[/tmp/test]# echo "a b c a b a" | awk '{for(i=1;i<=NF;i++)a[$i]++}{for(i in a) print i"="a[i]}'
a=3
b=2
c=1

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/24237320/viewspace-2072968/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-07-13

  • 博文量
    406
  • 访问量
    1208686