AWK简单使用

来源:互联网 发布:淘宝买东西寄错地址 编辑:程序博客网 时间:2024/05/21 07:52



  • AWK的使用格式
awk [选项] '处理命令' 文件名
  • 常用选项
-F:指定分隔符
  • 常用处理命令
print
  • 示例
awk -F : '{print $1,$2,$7}' /etc/passwd
  • 常用的内置变量
NR:number of record 打印行号
NF:number of field 打印字段个数
  • 示例
awk -F: '{print NR}' /etc/passwd :打印每一行的行号
awk -F: '{print NF}' /etc/passwd 打印有多少个字段
awk -F: '{print $NF}' /etc/passwd 打印最后一个字段的值
  • 常用处理命令
printf
  • 示例
# 其中-表示向左对其
awk -F: '{printf "Username:%-15s UUID:%-5i \n",$1,$3}' /etc/passwd
  • 使用正则表达式匹配
# 这里的$NF表示最后一个字段,~表示匹配,/bash$/表示匹配以bash结尾的行
awk -F: '$NF~/bash$/{print $1,$7}' /etc/passwd
awk -F: '$3>=500{print $1,$3}' /etc/passwd 其中:$3>=500就是第三个字段的值大于500
awk -F: '$NF=="/bin/bash"{print $1,$7}' /etc/passwd 找出shell是bash的用户
awk -F: '$NF~/bash$/{print $1,$7}' /etc/passwd 先匹配最后一个字段是bash结尾的行,然后再取第一个字段和最后一个字段
awk -F: '(NR>10&&NR<20){print $1}' /etc/passwd 先找出行号为11到19
awk -F: '{ if($3>=1000) {printf "Common User: %-10s\n",$1 } else {printf "System User: %-10s\n",$1}}' /etc/passwd 通过if else语句,判断一下,如果uuid大于1000,则显示为普通用户,小于1000则为系统用户
  • AWK不仅可以使用if else语句,还可以使用for、while循环,数组,函数等等,但是这些高级功能在实际应用过程中较少,因此如果自己有兴趣,可以查看对应的文档
原创粉丝点击