awk命令
对文件和数据进行处理的编程语言
语法格式: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
-------------------------------------------
个性签名:代码过万,键盘敲烂!!!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!