linux awk 区别,linux awk 中 RS,ORS,FS,OFS 区别与联系
今天在学习时偶尔搜索到了这篇文章,觉得不错,转摘一下: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 区别与联系相关推荐
- linux awk 中 RS,ORS,FS,OFS 区别与联系
今天在学习时偶尔搜索到了这篇文章,觉得不错,转摘一下:http://blog.51yip.com/shell/1151.html 总结 RS,ORS,FS,OFS的区别和联系. 一,RS与ORS 1, ...
- awk中RS,ORS,FS,OFS区别与联系
学习awk时,一定要记得动手去实践,只有在实践中才能发现问题,以下就我在学习中和实践中的经验,总结一下RS,ORS,FS,OFS的区别和联系. 一,RS与ORS 1,RS是记录分隔符,默认的分隔符是\ ...
- Linux中awk后面的RS, ORS, FS, OFS 用法
Linux中awk后面的RS, ORS, FS, OFS 含义 一.RS 与 ORS 差在哪 我们经常会说,awk是基于行列操作文本的,但如何定义"行"呢?这就是RS的作用. ...
- awk内置命令RS,ORS,FS,OFS的使用
Awk内置命令RS, ORS, FS, OFS FS 指定字段列分隔符 OFS 指定输出字段列分隔符 RS指定行分隔符 默认分隔符为\n ORS指定输出行分隔符 FS指定列分隔符,相当于参数-F.OF ...
- Linux中awk后面的RS, ORS, FS, OFS 含义
awk之RS.ORS与FS.OFS RS:Record Separator,记录分隔符 ORS:Output Record Separate,输出当前记录分隔符 FS:Field Separator, ...
- linux rs,Linux中的RS, ORS, FS, OFS
一.RS 与 ORS 差在哪 我们经常会说,awk是基于行列操作文本的,但如何定义"行"呢?这就是RS的作用. 默认情况下,RS的值是\n.下面通过实例来理解下RS. echo ...
- java super extend 区别_Java泛型中extends和super的区别
extends T>和 super T>是Java泛型中的"通配符(Wildcards)"和"边界(Bounds)"的概念. extends T&g ...
- python中的post和get请求的区别_HTTP: Request中的post和get区别
* get和post之间的主要区别 1.get是从服务器上获取数据,post是向服务器传送数据. 2.在客户端, get是把参数数据队列加到提交表单的action属性所指的url中,值和表单内各个字段 ...
- 命令 —— awk内置变量(NF,NR,FS,FILENAME)
关于awk命令的几个内置变量(NF,NR,FS,FILENAME) 1.NF:支持记录域个数,在记录被读之后再设置例1 [root@redhat wilsontest]# pwd /tmp/wilso ...
最新文章
- HashMap源码实现分析
- 1080Ti 就搞定最新 SOTA 模型?一个普通研究生勇敢发毕业论文引起热议
- 各类常见的网站检查工具
- CentOS7——卡在在启动界面
- 搜索推荐中的召回匹配模型综述(二):基于表示学习的深度学习方法
- 如何开启linux的dhcp服务器,怎么开启DHCP服务器啊
- mysql source code_Source Code
- 一步一步写算法(之双向链表)
- 强口令检测(使用正则表达式)
- linux6禁用屏幕保护程序,禁用屏幕保护程序(ScreenSaver Disabled)
- Android三大动画介绍及使用
- 一米村长讲故事机器人_主持人李锐推出“村长讲故事”APP,已入驻喜马拉雅
- pytorch Bus error (core dumped)
- 频率响应、零极点、稳定性专题
- 小武学fpgaStep1
- 程序员编程技术迅速提高终极攻略
- html app启动页制作,【示例】App引导页的制作
- 在git bash中输入git init 提示错误信息: fatal: open /dev/null or dup failed: No such file or directory的解决办法
- 《生成式对抗网络GAN的研究进展与展望》论文笔记
- 这些前端案例看似很简单(内附动图)
热门文章
- Altium Designer 19.1.18 - 隐藏某一个网络的飞线
- vue项目整合ckplayer
- 一招教你如何在简历上突出工作经验!(干货)
- 论文精度MISC: A MIxed Strategy-Aware Model Integrating COMET for Emotional Support Conversation
- phpwind9.0 read.php 修改,phpwind9.0模板制作教程——制作论坛风格
- FPGA结构分析——IDELAY2,网口储备点3
- EasyAR笔记01 检测云识别是否存在相似图片
- 抽象类可以继承具体类吗?
- android 彩信发送,在部分手机上报错,提示activityNotFoundError。
- e.pageX、e.clientX、e.screenX、e.offsetX的区别以及元素的一些CSS属性