awk '条件类型1{动作1} 条件类型2{动作2} ...' filename
awk 后面接两个单引号并加上大括号 {} 来设定想要对数据进行的处理动作。 awk 可以处理后续接的档案,也可以读取来自前个指令的 standard output。
last -n 5 | awk '{print $1 "\t" $3}'
root 192.168.1.100
root 192.168.1.100
root 192.168.1.100
dmtsai 192.168.1.100
root Fri
#数据中出现空格就会出现误判。 上例显示last第一列与第三列的值, 中间用tab隔开。
awk内建变量
NF | 每一行 ($0) 拥有的字段总数 |
NR | 目前 awk 所处理的是『第几行』数据 |
FS | 目前的分隔字符,默认是空格键 |
last -n 5| awk '{print $1 "\t lines: " NR "\t columes: " NF}'
root lines: 1 columes: 10
root lines: 2 columes: 10
root lines: 3 columes: 10
dmtsai lines: 4 columes: 10
root lines: 5 columes: 9
# 注意喔,在 awk 内的 NR, NF 等变量要用大写,且不需要有钱字号 $ 啦!非变量要用双引号括起来。
cat /etc/passwd | awk 'BEGIN {FS=":"} $3 < 10 {print $1 "\t " $3}' #显示按:分隔第三列(UID)小于10的账号与UID