设为首页 收藏本站
查看: 214|回复: 0

[经验分享] awk之RS、ORS、FS、OFS基础及举例

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-12-1 08:38:32 | 显示全部楼层 |阅读模式
RS:Record Separator,记录分隔符
ORS:Output Record Separate,输出当前记录分隔符
FS:Field Separator,字段分隔符
OFS:Out of Field Separator,输出字段分隔符
PS:RS、ORS、FS、OFS的英文解释绝不是这样的,这里只是解释清楚。建议去阅读awk的英文读物,其中解释了缩写的含义。
什么是field(字段),什么是record(记录行)?

示例:
1.txt内容如下:
  • i 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与ORS

RS:记录行分隔符
示例:
1.txt
  • a\n
  • b\n
  • c\n
  • d\n
  • e\n

该文本总共有5行,每一行都有一个换行符“\n”。所以每行记录都是以“\n”为一个(换行的)标志。
可以用一下方法来理解:
找到某某标志,让每个某某后的内容重新变成一行
示例
1.txt内容如下:
a|b|c
代码:awk 'BEGIN{ RS="|"; } { print $0 }'
a
b
b

ORS:可以看成RS的逆向过程
示例
1.txt内容如下:
a
b
c
可以这样理解:
观察每一行的“换行符号”,然后将“换行符号”替换成你想要的符号。
awk 'BEGIN{ ORS="----" }{ print $0 }' 1.txt
a----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 }' filename
i love you

OFS:输出的字段分隔符
这么解释吧,如上例中“i----love----you”,“----”为分隔符(FS),如果我们想改为用其他符号显示可以这样:
awk 'BEGIN{ FS="----";OFS="*****" }{ print $1,$2,$3 }' filename
i*****love*****you
PS:RS与ORS可以说成是一个互逆的过程()也可以看成一个替换的过程,但是看成互逆的过程比较好理解;FS与OFS就是一个替换的过程。

其实OFS还有一个例子
echo "abc" | awk '{ OFS="." } { NF=NF; print NF,$0}'
结果
1.abc

awk之RS、ORS与FS、OFS及举例.doc (16.5 KB, 下载次数: 0)


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-145618-1-1.html 上篇帖子: Redhat7配置LVM 下篇帖子: centos反编译APK包
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表