AWK
awk处理的内容可以是标准输入,文本文件或管道
awk演示文档passwd
1 2 3 4 5 6 7 8 9 10 | root x 0 0 root / root / bin / bash bin x 1 1 bin / bin / sbin / nologin daemon x 2 2 daemon / sbin / sbin / nologin adm x 3 4 adm / var / adm / sbin / nologin lp x 4 7 lp / var / spool / lpd / sbin / nologin sync x 5 0 sync / sbin / bin / sync shutdown x 6 0 shutdown / sbin / sbin / shutdown halt x 7 0 halt / sbin / sbin / halt mail x 8 12 mail / var / spool / mail / sbin / nologin operator x 11 0 operator / root / sbin / nologin |
输出行号大于2的第一列和第三列
1 | awk 'NR>=2{print $1,$3}' passwd |
awk处理文本执行过程
1,awk读入第一行内容
2,判断是否符合条件(NR>=2)
不符合条件,不处理
符合条件,打印1,3列
3,顺序读取第2,3,4,5...行知道文件结尾
域和记录
awk里面使用1...表示对于的列其中NF表示最后一列
awk对每个要处理的数据认为都具有格式和结构,而不仅仅是一堆字符串。默认情况下,每一行内容成为一个记录。
输入行号加内容
1 | awk '{print NR,$0}' passwd |
默认行的分隔符RS是换行,可以改成其他字符例如/
1 | awk 'BEGIN{RS="/"}{print NR,$0}' passwd |
awk把文件当做一个连续的字符串。默认\n为换行符
FS分隔符默认是空格,连续空格和tab建
使用以下格式指定分隔符
1 | awk - F ":" |
使用分隔符分割passwd文件
1 | awk - F ":" '{print $1,$NF}' / etc / passwd |
使用FS变量定义分隔符效果是一样的
1 | awk 'BEGIN{FS=":"}{print $1,$NF}' / etc / passwd |
PS:输出分隔符OFS 用的不多
1 | awk 'BEGIN{FS=":";OFS="/"}{print $1,$NF}' / etc / passwd |
指定多个分隔符,以:和/为分隔符
1 | awk - F "[:/]" '{print $1}' / etc / passwd |
awk正则表达式
匹配以s开头的一整行
1 | awk '/^s/{print $0}' passwd |
匹配第五个区域以r开头的行(sed不方便)
1 | awk '$5~/^r/ {print $0}' passwd |
$5代表第五个区域 ~代表匹配 ,匹配的符合用//放在中间
匹配第五区域以c结尾的显示一整行
1 | awk '$5~/c$/ {print $0}' passwd |
匹配包含一个或者两个o的行并且打印出整行
1 | awk - - posix '/o{1,2}/{print $0}' passwd |
打印大于第2行小于第5行的整行
1 | awk 'NR>=2&&NR<=5{print NR,$0}' passwd |
未完待续30
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!