一、NR和FNR

1.释义

NR: 表示当前读取的行数

FNR:当前修改了多少行





2.举例

比如现在AWK处理到第五行。第一行没有进行操作,2,3,4,5行进行了操作,那么NR=5,FNR=4

NR==FNR 表示从起始行到当前行,awk都进行了操作,比如修改,添加等等 ;



二、NF和$NF

1.释义

NF:浏览记录的域的个数

$NF: 最后一个列,输出最后一个列的内容



2.举例

[root@vshi-template shell]# pwd

/root/guanyy/scripts/shell

[root@vshi-template shell]# echo $PWD|awk -F/ '{print $NF}'

shell

[root@vshi-template shell]# echo $PWD|awk -F/ '{print NF}'

5



三、FS和OFS



1.释义

FS:指定列分隔符,当FS为空的时候,awk会把一行中的每个字符,当成一列来处理。

OFS:列输出分隔符



2.举例

(1)FS指定列分隔符

  1. [zhangy@localhost test]$ echo "111|222|333"|awk '{print $1}'
  2. 111|222|333
  3. [zhangy@localhost test]$ echo "111|222|333"|awk 'BEGIN{FS="|"}{print $1}'
  4. 111

(2)FS也可以使用正则

  1. [zhangy@localhost test]$ echo "111||222|333"|awk 'BEGIN{FS="[|]+"}{print $1}'
  2. 111

(3)FS为空时

  1. [zhangy@localhost test]$ echo "111|222|333"|awk 'BEGIN{FS=""}{NF++;print $0}'
  2. 1 1 1 | 2 2 2 | 3 3 3

(4)RS被设定成非\n时,\n会成FS分割符中的一个

  1. [zhangy@localhost test]$ cat test1
  2. 111 222
  3. 333 444
  4. 555 666
  5. [zhangy@localhost test]$ awk 'BEGIN{RS="444";}{print $2,$3}' test1
  6. 222 333
  7. 666

(5)OFS列输出分隔符

  1. [zhangy@localhost test]$ awk 'BEGIN{OFS="|";}{print $1,$2}' test1
  2. 111|222
  3. 333|444
  4. 555|666
  5. [zhangy@localhost test]$ awk 'BEGIN{OFS="|";}{print $1 OFS $2}' test1
  6. 111|222
  7. 333|444
  8. 555|666

test1只有二列,如果100列,都写出来太麻烦了吧。

  1. [zhangy@localhost test]$ awk 'BEGIN{OFS="|";}{print $0}' test1
  2. 111 222
  3. 333 444
  4. 555 666
  5. [zhangy@localhost test]$ awk 'BEGIN{OFS="|";}{NF=NF;print $0}' test1
  6. 111|222
  7. 333|444
  8. 555|666

为什么第二种方法中的OFS生效呢?个人觉得,awk觉查到列有所变化时,就会让OFS生效,没变化直接输出了。



参考:http://blog.51yip.com/shell/1151.html

关于awk中NR、FNR、NF、$NF、FS、OFS的说明的更多相关文章

  1. awk之NR==FNR问题

    NR,表示awk开始执行程序后所读取的数据行数. FNR,与NR功用类似,不同的是awk每打开一个新文件,FNR便从0重新累计. 下面看两个例子: 1,对于单个文件NR 和FNR 的 输出结果一样的 ...

  2. awk中NF,NR的含义

    awk中NF和NR的意义,其实你已经知道NF和NR的意义了,NF代表的是一个文本文件中一行(一条记录)中的字段个数,NR代表的是这个文本文件的行数(记录数).在编程时特别是在数据处理时经常用到.建议你 ...

  3. awk中的NR FNR

    shell编程中,awk简直就是一把利器,你能够把它看成shell的一部分,也能够看成一种单独的语言,功能十分强大.今天先来说一说NR与FNR 先准备两个文件: 1.txt,内容为: user pas ...

  4. awk中NF的使用

    统计机器中网络连接各个状态个数 netstat -a | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'   一下子不明白$NF是什么意 ...

  5. awk 中 FS的用法

    在openwrt文件 ar71xx.sh中 查询设备类型时,有这么一句, machine=$(awk 'BEGIN{FS="[ \t]+:[ \t]"} /machine/ {pr ...

  6. awk 中 RS,ORS,FS,OFS 区别与联系

    一,RS与ORS 1,RS是记录分隔符,默认的分隔符是\n,具体用法看下 [root@krlcgcms01 mytest]# cat test1     //测试文件 111 222 333 444 ...

  7. 转 awk中RS,ORS,FS,OFS区别与联系

     今天用到awk ofs 看到一篇不错文章 awk中RS,ORS,FS,OFS区别与联系 张映 发表于 2010-12-02 分类目录: shell 标签:awk, FS, OFS, ORS, RS, ...

  8. Linux中awk后面的RS, ORS, FS, OFS 用法

    Linux中awk后面的RS, ORS, FS, OFS 含义 一.RS 与 ORS 差在哪   我们经常会说,awk是基于行列操作文本的,但如何定义“行”呢?这就是RS的作用.  默认情况下,RS的 ...

  9. Linux中awk后面的RS, ORS, FS, OFS 含义

    转载自http://blog.csdn.net/qq416647781/article/details/40649419   一.RS 与 ORS 差在哪   我们经常会说,awk是基于行列操作文本的 ...

随机推荐

  1. 梳理一下我理解的aop

    在看了很多网上的资料和记录之后,我大概捋了下SpringAOP的各种阶段: 基本的advice编程,利用ProxyFactory拿代理类 利用spring把ProxyFactory,advice等be ...

  2. DB2中横表纵表互换

    1.列转行:创建一个如下的表drop table dwtmp.tmp_xn_lsb; create table dwtmp.tmp_xn_lsb ( year      int ,quarter   ...

  3. ASP.NET MVC 复制MVC项目代码到同一个项目的时候报错The request for ‘home’ has found the following matching controll

    ASP.NET MVC 复制MVC项目代码到同一个项目的时候报错The request for ‘home’ has found the following matching controll “/” ...

  4. 16年毕业的前端er在杭州求职ing

    来杭州也有一两个星期了,这个周末下雨,是在没地去,还是习惯性的打开电脑逛技术论坛,想想也是好久没有更新博文了... 背景 因为曾经看过一篇文章面试分享:一年经验初探阿里巴巴前端社招所以来杭州也是带有目 ...

  5. 【Web应用-Web作业】Web 作业无法直接运行 jar 文件

    问题描述 在经典管理门户中将直接压缩的 jar 文件打包为 zip 包,上传到 web 作业时报错. 解决方法 jar 文件的运行需要依托于 java 进程,所以在运行 jar 文件时,我们都会以格式 ...

  6. Spring Boot: Spring Starter Project

    好久没有创建过新项目,楼主发现Spring Boot项目创建失败了!!! 其中有两处错误: [图一不知道是哪里错,果断删掉重输入一次.成功进入下一步  其余步骤也没有错误,然而  最后一步失败了,如图 ...

  7. MySQL备份和还原数据库及慢查询日志使用

  8. 洛谷 P1009 阶乘之和

    题目描述 用高精度计算出S=1!+2!+3!+…+n!(n≤50) 其中“!”表示阶乘,例如:5!=5*4*3*2*1. 输入输出格式 输入格式: 一个正整数N. 输出格式: 一个正整数S,表示计算结 ...

  9. CPP-基础:友元

    友元可以是一个函数,该函数被称为友元函数:友元也可以是一个类,该类被称为友元类. 我们已知道类具有封装和信息隐藏的特性.只有类的成员函数才能访问类的私有成员,程序中的其他函数是无法访问私有成员的.非成 ...

  10. iOS开发遇到的坑之一: 开发遇见如下错误:Undefined symbols for architecture arm64

    博客处女作,写得不好望谅解! “for architecture arm64”就是说没有支持arm64,在Build settings里architecture相关的几项需要配置正确 在最近升级coc ...