【shell编程】awk命令
正文
awk命令
awk命令格式:
awk内置变量:
内置变量 | 含义 |
$n | 表示当前行(记录)的第n个字段,比如2表示第二个字段,以此类推 |
$0 | 表示执行过程中当前行(记录)的文本内容 |
FILENAME | 表示当前行(记录)所在的文件名称 |
FS | 表示字段分隔符,默认为空格 |
NF | 表示字段数,在执行过程中当前行(记录)的总字段数,即存在多少列 |
FNR | 表示当前行(记录)在当前文件的行(记录)号,从1开始 |
NR | 表示执行过程中到目前位置的总行(记录)号,从1开始 |
OFS | 表示输出字段分隔符,默认一个空格 |
ORS | 表示输出行(记录)分隔符,默认一个换行符 |
RS | 表示行(记录)分隔符,默认一个换行符 |
常用选项
- -f [脚本文件],--file=[脚本文件] 指定脚本文件,从脚本中读取awk命令
- -F [字段分隔符],--field-separator=[字段分隔符] 指定FS(字段分隔符)
- -v [变量名=变量值],--assign=[变量名=变量值] 创建一个自定义变量,并赋值
图解如下:
入门实例:
假设last -n 5的输出如下:
root pts/2 175.11.220.38 Sat Aug 5 17:04 still logged in
root pts/1 175.11.220.38 Sat Aug 5 11:56 still logged in
root pts/0 175.11.220.38 Sat Aug 5 11:24 still logged in
root pts/0 175.11.216.182 Thu Aug 3 19:12 - 02:28 (07:16)
root pts/0 175.11.218.106 Tue Aug 1 19:15 - 23:11 (03:56)
1. 如果只是显示最近登录的5个账号:
# last -n 5 | awk '{print $1}'
root
root
root
root
root
wtmp
2. 统计每条记录的信息:
# last -n 5 | awk '{print $1 "\t lines: " NR "\t columns: "NF}'
root lines: 1 columns: 10
root lines: 2 columns: 10
root lines: 3 columns: 10
root lines: 4 columns: 10
root lines: 5 columns: 10
lines: 6 columns: 0
wtmp lines: 7 columns: 7
参考资料
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
2018-05-22 二叉树的基本理论知识
2018-05-22 【C++】类前置声明范例