今天在学习时偶尔搜索到了这篇文章,觉得不错,转摘一下:http://blog.51yip.com/shell/1151.html

总结 RS,ORS,FS,OFS的区别和联系。

一,RS与ORS

1,RS是记录分隔符,默认的分隔符是\n,具体用法看下

[root@krlcgcms01 mytest]# cat test1     //测试文件

111 222

333 444

555 666

2,RS默认分割符\n

[root@krlcgcms01 mytest]# awk '{print $0}' test1  //awk 'BEGIN{RS="\n"}{print $0}' test1 这二个是一样的

111 222

333 444

555 666

其实你可以把上面test1文件里的内容理解为,111 222\n333 444\n555 6666,利用\n进行分割。看下一个例子

3,自定义RS分割符

[zhangy@localhost test]$ echo "111 222|333 444|555 666"|awk 'BEGIN{RS="|"}{print $0,RT}'

111 222 |

333 444 |

555 666

结合上面一个例子,就很容易理解RS的用法了。

4,RS也可能是正则表达式

[zhangy@localhost test]$ echo "111 222a333 444b555 666"|awk 'BEGIN{RS="[a-z]+"}{print $1,RS,RT}'

111 [a-z]+ a

333 [a-z]+ b

555 [a-z]+

从例3和例4,我们可以发现一点,当RT是利用RS匹配出来的内容。如果RS是某个固定的值时,RT就是RS的内容。

5,RS为空时

[zhangy@localhost test]$ cat -n test2

1  111 222

2

3  333 444

4  333 444

5

6

7  555 666

[zhangy@localhost test]$ awk 'BEGIN{RS=""}{print $0}' test2

111 222

333 444

333 444

555 666

[zhangy@localhost test]$ awk 'BEGIN{RS="";}{print ""}' test2  //这个例子看着比较明显

333 444 >

从这个例子,可以看出当RS为空时,awk会自动以多行来做为分割符。

6,ORS记录输出分符符,默认值是\n

把ORS理解成RS反过程,这样更容易记忆和理解,看下面的例子。

[zhangy@localhost test]$ awk 'BEGIN{ORS="\n"}{print $0}' test1  //awk '{print $0}' test1二者是一样的

111 222

333 444

555 666

[zhangy@localhost test]$ awk 'BEGIN{ORS="|"}{print $0}' test1

111 222|333 444|555 666|

二,FS与OFS

1,FS指定列分割符

[zhangy@localhost test]$ echo "111|222|333"|awk '{print $1}'

111|222|333

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

111

2,FS也可以用正则

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

111

3,FS为空的时候

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

1 1 1 | 2 2 2 | 3 3 3

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

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

[zhangy@localhost test]$ cat test1

111 222

333 444

555 666

[zhangy@localhost test]$ awk 'BEGIN{RS="444";}{print $2,$3}' test1

222 333

666

222和333之间是有一个\n的,当RS设定成444后,222和333被认定成同一行的二列了,其实按常规思想是二行的一列才对。

5,OFS列输出分隔符

[zhangy@localhost test]$ awk 'BEGIN{OFS="|";}{print $1,$2}' test1

111|222

333|444

555|666

[zhangy@localhost test]$ awk 'BEGIN{OFS="|";}{print $1 OFS $2}' test1

111|222

333|444

555|666

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

[zhangy@localhost test]$ awk 'BEGIN{OFS="|";}{print $0}' test1

111 222

333 444

555 666

[zhangy@localhost test]$ awk 'BEGIN{OFS="|";}{NF=NF;print $0}' test1

111|222

333|444

555|666

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

linux awk 区别,linux awk 中 RS,ORS,FS,OFS 区别与联系相关推荐

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

    今天在学习时偶尔搜索到了这篇文章,觉得不错,转摘一下:http://blog.51yip.com/shell/1151.html 总结 RS,ORS,FS,OFS的区别和联系. 一,RS与ORS 1, ...

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

    学习awk时,一定要记得动手去实践,只有在实践中才能发现问题,以下就我在学习中和实践中的经验,总结一下RS,ORS,FS,OFS的区别和联系. 一,RS与ORS 1,RS是记录分隔符,默认的分隔符是\ ...

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

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

  4. awk内置命令RS,ORS,FS,OFS的使用

    Awk内置命令RS, ORS, FS, OFS FS 指定字段列分隔符 OFS 指定输出字段列分隔符 RS指定行分隔符 默认分隔符为\n ORS指定输出行分隔符 FS指定列分隔符,相当于参数-F.OF ...

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

    awk之RS.ORS与FS.OFS RS:Record Separator,记录分隔符 ORS:Output Record Separate,输出当前记录分隔符 FS:Field Separator, ...

  6. linux rs,Linux中的RS, ORS, FS, OFS

    一.RS 与 ORS 差在哪 我们经常会说,awk是基于行列操作文本的,但如何定义"行"呢?这就是RS的作用.  默认情况下,RS的值是\n.下面通过实例来理解下RS. echo ...

  7. java super extend 区别_Java泛型中extends和super的区别

    extends T>和 super T>是Java泛型中的"通配符(Wildcards)"和"边界(Bounds)"的概念. extends T&g ...

  8. python中的post和get请求的区别_HTTP: Request中的post和get区别

    * get和post之间的主要区别 1.get是从服务器上获取数据,post是向服务器传送数据. 2.在客户端, get是把参数数据队列加到提交表单的action属性所指的url中,值和表单内各个字段 ...

  9. 命令 —— awk内置变量(NF,NR,FS,FILENAME)

    关于awk命令的几个内置变量(NF,NR,FS,FILENAME) 1.NF:支持记录域个数,在记录被读之后再设置例1 [root@redhat wilsontest]# pwd /tmp/wilso ...

最新文章

  1. HashMap源码实现分析
  2. 1080Ti 就搞定最新 SOTA 模型?一个普通研究生勇敢发毕业论文引起热议
  3. 各类常见的网站检查工具
  4. CentOS7——卡在在启动界面
  5. 搜索推荐中的召回匹配模型综述(二):基于表示学习的深度学习方法
  6. 如何开启linux的dhcp服务器,怎么开启DHCP服务器啊
  7. mysql source code_Source Code
  8. 一步一步写算法(之双向链表)
  9. 强口令检测(使用正则表达式)
  10. linux6禁用屏幕保护程序,禁用屏幕保护程序(ScreenSaver Disabled)
  11. Android三大动画介绍及使用
  12. 一米村长讲故事机器人_主持人李锐推出“村长讲故事”APP,已入驻喜马拉雅
  13. pytorch Bus error (core dumped)
  14. 频率响应、零极点、稳定性专题
  15. 小武学fpgaStep1
  16. 程序员编程技术迅速提高终极攻略
  17. html app启动页制作,【示例】App引导页的制作
  18. 在git bash中输入git init 提示错误信息: fatal: open /dev/null or dup failed: No such file or directory的解决办法
  19. 《生成式对抗网络GAN的研究进展与展望》论文笔记
  20. 这些前端案例看似很简单(内附动图)

热门文章

  1. Altium Designer 19.1.18 - 隐藏某一个网络的飞线
  2. vue项目整合ckplayer
  3. 一招教你如何在简历上突出工作经验!(干货)
  4. 论文精度MISC: A MIxed Strategy-Aware Model Integrating COMET for Emotional Support Conversation
  5. phpwind9.0 read.php 修改,phpwind9.0模板制作教程——制作论坛风格
  6. FPGA结构分析——IDELAY2,网口储备点3
  7. EasyAR笔记01 检测云识别是否存在相似图片
  8. 抽象类可以继承具体类吗?
  9. android 彩信发送,在部分手机上报错,提示activityNotFoundError。
  10. e.pageX、e.clientX、e.screenX、e.offsetX的区别以及元素的一些CSS属性