一、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. js filter用法比较

    讲解一个很实用的JS小语法 filter 就是从数组中找到适合条件的元素(比如说大于某一个元素的值) var arr=[1,23,5,78,34,55,13]; 如何才能找到大于23的所有元素呢, 1 ...

  2. 极简的css浮动窗口

    <!doctype html> <html> <head> <meta charset="utf-8"> <meta http ...

  3. [转]AngularJS移动开发中的坑汇总

    使用AngualrJs开发移动App已经快半年了,逐渐积累了很多AngularJS的问题,特别是对于用惯了Jquery的开发者,转到AngularJS还是需要克服很多问题的.不像Jquery那样侧重D ...

  4. Java GUI 事件监听

    现在使用的仍是AWT的事件模型.涉及到3类对象: Event Source:事件源,即事件发生所在的组件 Event:事件,封装了此次事件的相关信息 Event Listener:事件监听器,监听事件 ...

  5. thinkphp分页集成

    控制器: $User = M('webcase'); //  实例化 User 对象 $list = $User->order('id desc')->page($_GET['p'].', ...

  6. nuget用法

    Update-Package -reinstall -ProjectName Cardin.HeartCare.Service.ChatService

  7. 你不知道的HTTP之首部字段一览

    一.HTTP/1.1 首部字段一览 HTTP 首部字段根据实际用途被分为以下 4 种类型: 1.通用首部字段:请求报文和响应报文两方都会使用的首部. 首部字段名 说明 Cache-Control 控制 ...

  8. Microsoft Sql server2005的安装步骤和常见问题解决方案

    一:安装sql server 2005过程中出现 如下问题:“选择的功能中没有任何功能可以安装或升级”: 解决方案:Microsoft SQL Server 2005→配置工具→SQL配置管理器→SQ ...

  9. (一)SpringMVC之警告: No mapping found for HTTP request with URI

    这个警告往往是因为url路径不正确. 所以从三个地方下手: 1.springmvc-config.xml中的配置handle,看看是不是因为handle没有配置导致的. 2.如果是使用注解的方式的话, ...

  10. Hyperledger Fabric on SAP Cloud Platform

    今天的文章来自Wen Aviva, 坐Jerry面对面的程序媛. Jerry在之前的公众号文章<在SAP UI中使用纯JavaScript显示产品主数据的3D模型视图>已经介绍过Aviva ...