AWK简单使用



  • 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循环,数组,函数等等,但是这些高级功能在实际应用过程中较少,因此如果自己有兴趣,可以查看对应的文档

你可能感兴趣的:(AWK简单使用)