前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux基础(好用到流泪的awk)

Linux基础(好用到流泪的awk)

作者头像
用户2617681
发布2019-08-08 16:09:25
1.2K0
发布2019-08-08 16:09:25
举报
文章被收录于专栏:秘籍酷秘籍酷

有些人刚学Linux,被各种字符界面的命令和工具所折磨,觉得还是点鼠标方便。但说到底其实都只是没有领略字符工具的效率和魅力罢了。Linux中不乏命令中的神器,今天来介绍其中的一款,来自白银时代的上古神器awk。

简单地说,awk是一种用于处理文本的编程语言工具,他扫描文件中的每一行,查找与命令行中所给定内容相匹配的模式,如果发现匹配内容,则进行下一个编程步骤。如果找不到匹配内容,则继续处理下一行。比如:

vincent@ubuntu:~$ awk ‘NR==1 { print $0 } NF==5 { print $1 }’ file

以上命令的执行逻辑是:awk从file中读取数据,每次读取一行,读到一行数据之后判断每一个条件是否成立,如果成立则执行花括号里面的动作,比如NR==1成立则执行print $0,然后再判断NF==5是否成立来决定是否执行print $1。然后读取下一行,以此类推。用伪代码来表示:

vincent@ubuntu:~$ awk ‘条件1 {动作1} 条件2 {动作2} ……’ file

其含义就是:从file中每次读取一行,然后针对这一行判断条件1,成立则执行动作1,否则不执行,然后判断条件2,成立则执行动作2,否则不执行,以此类推。如果一个动作前面没有条件,则这个动作就可以“无条件”执行。

请注意,awk尤其擅长处理带“列格式”的文件,为了更好地理解awk的使用技巧,现假设有一个测试文档,该文档记录的是一个跆拳道培训班的孩子的名字、入学日期、学号、级别、年龄和分数:

现在要将不同年龄段的孩子的信息,分别归置到不同的文件中,并且要求文件名为年龄数。如果没有awk,编程实现这个功能是挺费周折的,但是awk却能一句话就搞定,请欣赏:

vincent@ubuntu:~$ awk '{print > $5}' grade.txt

意思是:每一行都将被重定向到以第5个域(年龄)命名的文件中去。就这样,一瞬间就将文件按年龄拆分成一个个规整好了的小文件了!怎样,有没有好用到流泪?

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 秘籍酷 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档