awk
ctrl+b/ctrl f 光标左/右
AWK:
man awk
一、内置变量:
print 打印;$0 全部:awk '{print $0}' student2.txt
$2 第二列(例:某些列不规则时):awk '{print $2}' student2.txt
NF 每行有多少列:awk '{print NF}' student2.txt
4
4
$NF 最后一列(如:不知有多少列用):awk '{print $NF}' student2.txt
$(NF-1) 倒数第二列:awk '{print $(NF-1)}' student2.txt
NR 多少行:awk '{print NR}' student2.txt
$NR 第一行的第一个+第二行的二个...:awk '{print $NR}' student2.txt
BEGIN{FS=":"} 以“:”分割取第一列:awk 'BEGIN{FS=":"} {print $1}' /etc/passwd
awk 'BEGIN{FS=":"} {print $NF}' /etc/passwd
二、符号
简化:awk -F: '{print $1}' /etc/passwd
以“:”分割取第一列和最后一列:awk -F":" '{print $1,$NF}' /etc/passwd
%s-字符串 %d-数字 %f-浮点
printf "%s\t%s\n", \n加换行,\t制表符:awk -F: '{printf "%s\t%s\n", $1,$NF}' /etc/passwd
-代表左,默认为右:awk -F":" '{printf "%-20s\t%-20s\n", $1,$NF}' /etc/passwd
awk -F: '{printf "%-20s%d\n", $1,$3}' /etc/passwd
%.2f:保留两位小数
awk -F":" 'BEGIN{printf "%-20s%-10s\n","username","bash"} {printf "%-20s%-10s\n", $1,$NF}' /etc/passwd
BEGIN{} {} END{}自定义参数COUNT:
awk -F: 'BEGIN{printf "%-20s\t%-20s\n","username","bash"} {printf "%-20s\t%-20s\n",$1,$NF;COUNT++} END{printf "%-20s\n",COUNT}' /etc/pass
支持正则:
关系运算:
列中的数进行比较:
1)
2)
3)~ “m”
练习:
一:取出日志中人员为yang的个数(先选出人员列,再筛选出yang)
加if判断:
二:.awk文件(重点)
名字为yang的人执行xx次:
统计所有用户执行xx次数:
统计每位tester的pass总数和fail总数