【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
参考资料