【shell编程】awk命令

 awk命令

awk命令格式:

 

awk内置变量:

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

参考资料

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

 

 

1. linux awk命令详解

 

posted @ 2021-05-22 23:59  苏格拉底的落泪  阅读(49)  评论(0编辑  收藏  举报