(1)AWK快速入门
awk用法入门
awk 'awk_program' a.txt
awk示例:
[root@docker-01 ~]# awk '{print $0}' a.txt # 输出a.txt中的每一行 ID name gender age email phone 1 Bob male 28 abc@qq.com 18023394012 2 Alice female 24 def@gmail.com 18084925203 3 Tony male 21 aaa@163.com 17048792503 4 Kevin male 21 bbb@189.com 17023929033 5 Alex male 18 ccc@xyz.com 18185904230 6 Andy female 22 ddd@139.com 18923902352 7 Jerry female 25 exdsa@189.com 18785234906 8 Peter male 20 bax@qq.com 17729348758 9 Steven female 23 bc@sohu.com 15947893212 10 Bruce female 27 bcbd@139.com 13942943905 [root@docker-01 ~]# awk '{print $0}{print "hello";print "world"}' a.txt ID name gender age email phone hello world 1 Bob male 28 abc@qq.com 18023394012 hello world 2 Alice female 24 def@gmail.com 18084925203 hello world 3 Tony male 21 aaa@163.com 17048792503 hello world 4 Kevin male 21 bbb@189.com 17023929033 hello world 5 Alex male 18 ccc@xyz.com 18185904230 hello world 6 Andy female 22 ddd@139.com 18923902352 hello world 7 Jerry female 25 exdsa@189.com 18785234906 hello world 8 Peter male 20 bax@qq.com 17729348758 hello world 9 Steven female 23 bc@sohu.com 15947893212 hello world 10 Bruce female 27 bcbd@139.com 13942943905 hello world # 多个代码块,代码块中多个语句 # 输出每行之后还输出两行:hello行和world行
对于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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?