linux awk 区别,awk中RS、ORS、FS、OFS的区别和联系小结
学习awk时,一定要记得动手去实践,只有在实践中才能发现问题,以下就我在学习中和实践中的经验,总结一下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 //这个例子看着比较明显
< 111 222 >
< 333 444 //这一行和下面一行,是一行
333 444 >
< 555 666 >
从这个例子,可以看出当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 区别,awk中RS、ORS、FS、OFS的区别和联系小结相关推荐
- linux awk 区别,linux awk 中 RS,ORS,FS,OFS 区别与联系
今天在学习时偶尔搜索到了这篇文章,觉得不错,转摘一下:http://blog.51yip.com/shell/1151.html 总结 RS,ORS,FS,OFS的区别和联系. 一,RS与ORS 1, ...
- 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是记录分隔符,默认的分隔符是\ ...
- awk内置命令RS,ORS,FS,OFS的使用
Awk内置命令RS, ORS, FS, OFS FS 指定字段列分隔符 OFS 指定输出字段列分隔符 RS指定行分隔符 默认分隔符为\n ORS指定输出行分隔符 FS指定列分隔符,相当于参数-F.OF ...
- Linux中awk后面的RS, ORS, FS, OFS 用法
Linux中awk后面的RS, ORS, FS, OFS 含义 一.RS 与 ORS 差在哪 我们经常会说,awk是基于行列操作文本的,但如何定义"行"呢?这就是RS的作用. ...
- 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 post和put的区别,ES 中的 POST 和 PUT 的区别
0.什么是Restful架构 比较难说清楚,这部分大雾状态,引ruanyf 理解RESTful架构 的几句总结吧: Fielding将他对互联网软件的架构原则,定名为REST,即Representat ...
- python post与get的区别_python中get和post有什么区别
更多编程教程请到:菜鸟教程 https://www.piaodoo.com/ 友情链接: 高州阳光论坛https://www.hnthzk.com/ 人人影视http://www.sfkyty.com ...
- python __import__和import区别_Python中import 与__import__() 之间的区别比较
本篇文章给大家带来的内容是关于Python中import 与__import__() 之间的区别比较,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 首先来说一下两者的区别: impo ...
最新文章
- 16 条 yyds 的代码规范
- DevExperience(1712)
- 算法,天使还是魔鬼?
- 学习Node.js并开始在浏览器之外执行JavaScript
- python页面切换_Python+Selenium学习--窗口切换及操作元素
- 企业微信开放客户朋友圈功能 无需审核即可使用
- ASP.NET AJAX入门系列(5):使用UpdatePanel控件(二)
- 微软修复严重的Azure漏洞,可用于泄露客户数据
- 你最喜欢哪款游戏的界面风格,为什么?
- 交互式电子杂志_电子杂志形式与交互问题分析
- ST电机库api使用——获取电机状态
- Scratch 3.x编程技巧:条件语句与随机数
- Shufflenet解读
- 【GreenDao学习笔记】SQLite数据库保存float/double小数类型精度丢失
- Nginx复习总结学习总结
- 如何录屏?电脑屏幕录制软件哪个好?
- kettle运行spoon.sh启动图形化界面报错处理
- 电子计算机进行会计核算 其会计,1. 使用电子计算机进行会计核算,其软件与其生成会计 ….doc...
- eve显示无法连接服务器,eve 链接不到服务器
- HCNP——OSPF路由器的角色
热门文章
- linux自动挂载ntfs分区,Ubuntu 12.04 开机自动挂载ntfs分区
- 【Level 08】U08 Positive Attitude L5 Satisfy your need to know
- Excel数据导入数据库(Java)
- python安装在d盘环境变量配置_python安装与环境变量配置
- android bitmap to base64_Android基础(11)—你需要知道的内存知识
- python3怎么用_当同时安装Python2和Python3后,如何兼容并切换使用详解(比如pip使用)...
- Java图片压缩 BufferedImage Linux 下代码阻塞不工作
- redis3.0伪集群安装步骤
- spring-boot ffmpeg 搭建一个音频转码服务
- Android-简单的图片验证码