awk之RS、ORS与FS、OFS
2015-08-06 18:03
417 查看
RS:Record Separator,记录分隔符ORS:Output Record Separate,输出当前记录分隔符FS:Field Separator,字段分隔符OFS:Out of Field Separator,输出字段分隔符PS:RS、ORS、FS、OFS的英文解释绝不是这样的,这里只是解释清楚。建议去阅读awk的英文读物,其中解释了缩写的含义。什么是field(字段),什么是record(记录行)?示例:1.txti am a student.
i like to swim
hello moto
1代表第一个记录行,2代表第二个记录行,3代表第三个记录行。通过观察我们可以知道总共有3个记录行(record)。看看第一行:“i am a student”,这一行的每个单词都是一个字段(field)。“i”是一个字段,“am”是一个字段,“a”是一个字段,“student”是一个字段,该行总共有4个字段。RS与ORSRS:记录行分隔符示例: 1.txta\n
b\n
c\n
d\n
e\n
该文本总共有5行,每一行都有一个换行符“\n”。所以每行记录都是以“\n”为一个(换行的)标志。可以用一下方法来理解:找到某某标志,让每个某某后的内容重新变成一行示例1.txta|b|c代码:awk 'BEGIN{ RS="|"; } { print $0 }'abbORS:可以看成RS的逆向过程示例1.txtabc可以这样理解:观察每一行的“换行符号”,然后将“换行符号”替换成你想要的符号。awk 'BEGIN{ ORS="----" }{ print $0 }' 1.txta----b----c----FS:字段分隔符FS默认值为“ (空格)”,如“hello moto”.在“hello moto”中有一个空格,空格就是hello与moto的分隔符(separator),而hello与moto就为字段(files)。awk以空格来区分。在看看“i----love----you”,如果我们用命令“awk “{ print $1 }””会看到结果为:i----love----you如果想打印出三个字母,通过观察可发现“----”为分隔符。awk 'BEGIN{ FS="----";}{ print $1,$2,$3 }' filenamei love youOFS:输出的字段分隔符。这么解释吧,如上例中“i----love----you”,“----”为分隔符(FS),如果我们想改为用其他符号显示可以这样:awk 'BEGIN{ FS="----";OFS="*****" }{ print $1,$2,$3 }' filenamei*****love*****you 其实OFS还有一个例子
echo "abc" | awk '{ OFS="." } { NF=NF; print NF,$0}'
结果
1.abc PS:RS与ORS可以说成是一个互逆的过程()也可以看成一个替换的过程,但是看成互逆的过程比较好理解;FS与OFS就是一个替换的过程。Have a nice day!!!
i like to swim
hello moto
1代表第一个记录行,2代表第二个记录行,3代表第三个记录行。通过观察我们可以知道总共有3个记录行(record)。看看第一行:“i am a student”,这一行的每个单词都是一个字段(field)。“i”是一个字段,“am”是一个字段,“a”是一个字段,“student”是一个字段,该行总共有4个字段。RS与ORSRS:记录行分隔符示例: 1.txta\n
b\n
c\n
d\n
e\n
该文本总共有5行,每一行都有一个换行符“\n”。所以每行记录都是以“\n”为一个(换行的)标志。可以用一下方法来理解:找到某某标志,让每个某某后的内容重新变成一行示例1.txta|b|c代码:awk 'BEGIN{ RS="|"; } { print $0 }'abbORS:可以看成RS的逆向过程示例1.txtabc可以这样理解:观察每一行的“换行符号”,然后将“换行符号”替换成你想要的符号。awk 'BEGIN{ ORS="----" }{ print $0 }' 1.txta----b----c----FS:字段分隔符FS默认值为“ (空格)”,如“hello moto”.在“hello moto”中有一个空格,空格就是hello与moto的分隔符(separator),而hello与moto就为字段(files)。awk以空格来区分。在看看“i----love----you”,如果我们用命令“awk “{ print $1 }””会看到结果为:i----love----you如果想打印出三个字母,通过观察可发现“----”为分隔符。awk 'BEGIN{ FS="----";}{ print $1,$2,$3 }' filenamei love youOFS:输出的字段分隔符。这么解释吧,如上例中“i----love----you”,“----”为分隔符(FS),如果我们想改为用其他符号显示可以这样:awk 'BEGIN{ FS="----";OFS="*****" }{ print $1,$2,$3 }' filenamei*****love*****you 其实OFS还有一个例子
echo "abc" | awk '{ OFS="." } { NF=NF; print NF,$0}'
结果
1.abc PS:RS与ORS可以说成是一个互逆的过程()也可以看成一个替换的过程,但是看成互逆的过程比较好理解;FS与OFS就是一个替换的过程。Have a nice day!!!
相关文章推荐
- android Bitmap->BGR字节数组
- 免费且超级好用的搜索引擎INSO
- [Golang] 从零开始写Socket Server(1): Socket-Client框架
- 10个最好用的在线编译/调试工具
- 测试分享一些经验
- MFC中CMainFrame类CDoc类CView类CApp类之间关系
- G - MZL's simple problem-HDU 5349 -模拟multiset
- Linux操作系统-命令-top
- 三分钟get13个神级邮件营销技巧!
- C++ Builder 将数据库数据导出到Excel中总结
- 使用memcpy移动数据位置的思考
- exchange灾难性恢复
- SQL查询的时候可自带循环
- 对linux设备驱动中的并发控制相关内容的理解
- zend 集成svn
- 关于JSP的Cookie的入门学习,以及部分代码的备注解释
- 在winform中捕获上下左右键等控制键的按键事件
- How-to: Enabled hive job running support on hive
- 浅析JTable与TableModel、TableCellRenderer、TableCellEditor接口——使用JComboBox显示单元格的值
- Study-android 的handler和message学习