首页 > 资讯 > 数码知识内容详情

awk命令 - 文本和数据进行处理的编程语言 2024-01-09 09:42:47 网络

awk命令来自三位创始人“Alfred Aho,Peter Weinberger, Brian Kernigh

awk命令来自三位创始人“Alfred Aho,Peter Weinberger, Brian Kernighan”的姓氏缩写,其功能是用于对文本和数据进行处理的编程语言。使用awk命令可以让用户自定义函数或正则表达式对文本内容进行高效管理,与sed、grep并称为Linux系统中的文本三剑客。

语法格式:awk 参数 文件名

常用参数:

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

内置变量:

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

参考示例

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

[root@linuxcool ~]# awk '{print $1,$2}' File.cfg
#version=RHEL8
ignoredisk --only-use=sda
autopart --type=lvm
# Partition
clearpart --none
………………省略部分输出信息………………

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

[root@linuxcool ~]# awk -F : '{print $1}' /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
………………省略部分输出信息………………

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

[root@linuxcool ~]# 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
geoclue:x:997:995:User for geoclue:/var/lib/geoclue:/sbin/nologin
………………省略部分输出信息………………

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

[root@linuxcool ~]# awk '/root/{print}' File.cfg 
rootpw --iscrypted $6$n9sZuTcY8Yzk4l.Q$LsuMNAROewyx.LomDtPpL9iJIOD3tsRThnzsAGE0hZXLMtdVCHVQ3pxzm3El8K2kuhcYLXJnhz.xUDGiE27s/1
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty

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

[root@linuxcool ~]# awk -F : '{print $NF}' /etc/passwd
/bin/bash
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/bin/sync
………………省略部分输出信息………………

与该功能相关的Linux命令:

  • dpkg-split命令 – 分割软件包
  • mysqlcheck命令 – 检查和修复MyISAM表
  • apmd命令 – 进阶电源管理服务程序
  • mattrib命令 – 更改或显示MS-DOS文件的属性
  • aureport命令 – 生成审计信息报表
  • lftpget命令 – 下载指定的文件
  • smbclient命令 – 存取SMB/CIFS服务器的用户端程序
  • apt-key命令 – 管理APT软件包密钥信息
  • diff3命令 – 比较3个文件的不同之处
  • egrep命令 – 在文件内查找指定的字符串

相关标签: 数码科技