awk命令

发布时间 2023-12-19 14:11:00作者: 我在路上回头看

对文件和数据进行处理的编程语言

语法格式:awk 参数 文件名

常用参数

-c 使用兼容模式 -h 显示帮助信息
-C 显示版权信息 -m 对指定值进行限制
-e 指定源码文件 -n 识别输入数据中的八进制饿十六进制数
-f 从脚本中读取awk命令 -O 启用程序优化
-F 设置输入时的字段分隔符 -v 定义一个变量并赋值
-v 自定义变量信息 -V 显示版本信息

内置变量

ARGC 命令行参数个数 NF 浏览记录域的个数
ARGV 命令行参数排列 NR 已读的记录数
ENVIRON 支持在队列中使用系统环境变量 OFS 输出域分隔符
FILENAME awk浏览的文件名 ORS 输出记录分隔符
FNR 浏览文件的记录数 RS 控制记录分隔符
FS 设置输入域分隔符

参考示例

仅显示指定文件中第1,2列的内容(默认以空格为分隔符)

[root@liuwei ~]# awk '{print $1,$2}' file.txt

以冒号为间隔符,仅显示指定文件中第1列的内容

[root@liuwei ~]# awk -F: '{print $1}' passwd
root
bin
daemon
adm
lp
sync

以冒号为间隔符,显示系统中所有UID号码大于500的用户信息

[root@liuwei ~]# awk -F: '$3>500' /etc/passwd
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
libstoragemgmt:x:997:994:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
unbound:x:996:992:Unbound DNS resolver:/etc/unbound:/sbin/nologin
setroubleshoot:x:995:991::/var/lib/setroubleshoot:/sbin/nologin
cockpit-ws:x:994:990:User for cockpit web service:/nonexisting:/sbin/nologin
cockpit-wsinstance:x:993:989:User for cockpit-ws instances:/nonexisting:/sbin/nologin
sssd:x:992:988:User for sssd:/:/sbin/nologin
clevis:x:991:987:Clevis Decryption Framework unprivileged user:/var/cache/clevis:/sbin/nologin
chrony:x:990:986::/var/lib/chrony:/sbin/nologin
liuwei:x:1000:1000::/home/liuwei:/bin/bash

仅显示指定文件中含有指定关键词root的内容

[root@liuwei ~]# awk '/root/{print}' passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

以冒号为间隔符,仅显示指定文件中最后一个字段的内容

[root@liuwei ~]# awk -F: '{print $NF}' passwd
/bin/bash
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/bin/sync
/sbin/shutdown
/sbin/halt