awk工具,主要将一行分成“字段”来处理。
awk '条件类型1{动作1} 条件类型2{动作2}...‘ filename
awk主要是处理每一行的字段内的数据,而默认的字段的分隔符为空格键或[tab]键
last -n 4 | awk '{ print $1 " " $3}'
变量$0代表一整行数据的意思
awk是以行尾一次处理的单位,而以字段尾最小的处理单位
变量NF 代表每一行($0)拥有的字段总数
变量NR 代表目前awk所处理的是“第几行”数据
变量FS 代表目前的分割字符,默认是空格键
last -n 4 | awk '{print $1 " lines: " NR " columes: " NF}' 在awk内的NR,NF等变量要大写,且不需要 $ 啦。
逻辑判断:
cat /etc/passwd | awk '{FS=":"} $3 < 10 {print $1 " " $3}' 查阅第三列小于10的数据,同时列出第一字段和第三字段。但是第一行会显示不如我们所想。
cat /etc/passwd | awk 'BEGIN {FS=":"} $3 < 10 {print $1 " " $3}' 可以让第一行也如我们所要求
cat pay.txt | awk 'NR==1 {printf "%10s %10s %10s %10s %10s ", $1,$2,$3,$4,"Total"} NR>=2 {total = $2 + $3 + $4 printf "%10s %10d %10d %10d %10.2f ", $1,$2,$3,$4, total}' 在awk中,变量可以直接使用,不需要加$符号。