扫码阅读
手机扫码阅读
三剑客之 awk
![](/theme/default/default/images/main/eye-open.png)
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
![](/theme/default/default/images/main/icon-link.png)
![](/theme/default/default/images/main/icon-jing.png)
咸鱼运维杂谈
扫码关注公众号
介绍
awk 是由贝尔实验室在1977年开发的文本处理工具,得名于其三位创始人Alfred Aho,Peter Weinberger, 和 Brian Kernighan的姓氏首字母。awk 在文本处理方面非常强大,能大幅提升工作效率。
基本使用
awk 通常按行处理文件内容,对每一行执行指定的命令。例如,可以使用 awk 来打印 /etc/passwd 文件的每一行。
awk '{print $0}' /etc/passwd
字段和记录处理
awk 通过指定字段和记录分隔符来处理文本。默认情况下字段分隔符是空格,记录分隔符是换行符。可以使用 -F 选项来指定字段分隔符,使用 OFS 和 ORS 来指定输出的字段分隔符和记录分隔符。
过滤与比较
awk 支持使用不同的条件进行过滤,包括基于字段值的比较(如 ==、!=、> 等),也支持正则表达式匹配。
awk '$1=="tcp" && $6=="LISTEN"' test.txt
正则表达式
awk 可以通过正则表达式来匹配字符串。模糊匹配和多条件匹配也是支持的。
awk '$6 ~ /LISTEN/' test.txt
BEGIN 和 END
awk 提供了 BEGIN 和 END 块,分别用于在处理文本之前和之后执行特定的语句。
awk 'BEGIN {print "Start"} {print $0} END {print "End"}' filename
实际应用示例
awk 可以用于计算内存占用、统计文件大小、计数用户数量等多种实际应用场景。
awk 'NR!=1{a[$1]+=$6;} END { for(i in a) print i ", " a[i]"KB";}' top.txt
总结
awk 是一个功能强大的文本处理工具,熟悉其用法可以极大地提高日常工作效率。本文介绍了awk的基础知识和一些实用的应用示例,但要深入学习awk,还需要查阅更多的资料和实践。
想要了解更多内容?
![](/theme/default/default/images/main/icon-link.png)
![](/theme/default/default/images/main/icon-jing.png)
咸鱼运维杂谈
扫码关注公众号
咸鱼运维杂谈的其他文章
加入社区微信群
与行业大咖零距离交流学习
![](https://cdn.easycorp.cn/rongpm/upload/202312/f_39217d624bb2b42ce8f6322ebd7e573a.png)
![](https://cdn.easycorp.cn/rongpm/upload/202312/f_39217d624bb2b42ce8f6322ebd7e573a.png)
软件研发质量管理体系建设
白皮书上线