- 工信部备案号 滇ICP备05000110号-1
- 滇公安备案 滇53010302000111
- 增值电信业务经营许可证 B1.B2-20181647、滇B1.B2-20190004
- 云南互联网协会理事单位
- 安全联盟认证网站身份V标记
- 域名注册服务机构许可:滇D3-20230001
- 代理域名注册服务机构:新网数码
欢迎来到蓝队云技术小课堂,每天分享一个技术小知识。
# 用法
awk 'awk_program' a.txt
语法解析:
a.txt 是awk要读取的文件,可以是0个文件、一个文件或者多个文件;如果给定0个文件,则标识从标准输入中读取
单引号包围的是awk代码,也称为awk程序;尽量使用单引号,因为在awk程序中经常使用$符号,而$符号在shell中是变量符号,如果使用双引号,则$符号会被shell解析为shell变量,然后进行变量替换;使用单引号,会让$符号留给awk去解析
awk程序中,大量使用大括号,大括号表示代码块,代码块中间可以直接连用,代码块内部的多个语句使用分号";"隔开
# 范例
# 输出a.txt中的每一行
awk '{print $0}' a.txt
# 多个代码块,代码块中多个语句
# 输出每行之后还输出两行:hello行和world行
awk '{print $0}{print "hello";print "world"}' a.txt
对于awk '{print $0}' a.txt
,它类似于shell的while循环while read line;do echo "$line";done <a.txt
。awk隐藏了读取每一行的while循环,它会自动读取每一行,其中的{print $0}
对应于Shell的while循环体echo "$line"
部分。
下面再分析该awk命令的执行过程:
读取文件第一行(awk默认按行读取文件)
将所读取的行赋值给awk的变量$0
,于是$0
中保存的就是本次所读取的行数据
进入代码块{print $0}
并执行其中代码print $0
,即输出$0
,也即输出当前所读取的行
执行完本次代码之后,进入下一轮awk循环:继续读取下一行(第二行)
将第二行赋值给变量$0
进入代码块执行print $0
执行完代码块后再次进入下一轮awk循环,即读取第三行,然后赋值给$0
,再执行代码块
…不断循环,直到读完文件所有数据…
退出awk
蓝队云官网上拥有完善的技术支持库可供参考,大家可自行查阅,更多技术问题,可以直接咨询。同时,蓝队云整理了运维必备的工具包免费分享给大家使用,需要的朋友可以直接咨询。
更多技术知识,蓝队云期待与你一起探索。
售前咨询
售后咨询
备案咨询
二维码
TOP