【shell编程】awk命令

正文

 awk命令

awk命令格式:

 

awk内置变量:

内置变量 含义
$n  表示当前行(记录)的第n个字段,比如12表示第二个字段,以此类推
$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

参考资料

Linux命令之awk/gawk(文本报告生成器)

 

 

1. linux awk命令详解

 

posted @   苏格拉底的落泪  阅读(50)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· 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++】类前置声明范例
点击右上角即可分享
微信分享提示