ll /bin/awk gawk
处理机制:根据模式一次从文件中抽取一行文本,对这行文本进行切片。
默认使用空白字符为分隔符
awk '{print $0}' file 全部一行
awk '{print $1}' file 以默认分隔符为界的第一个字符
awk '{print $1,$2}' file 不加,就不会有空格,会连接在一起显示
awk -F ":"
awk -F: 制定分隔符
awk -F: '{print $1,$3}' /etc/passwd
awk -F: '{print $1,$3,NR,NF}' /etc/passwd
awk -F: '{print NR,NF}' /etc/passwd
NR 为输出行号
NF 输出列号
可以单独使用
awk里面也可以使用脚本
awk 'BEGIN {}' 读入处理第一行文本之前执行的语句,一般用来初始化操作
{}逐行处理
END{}处理完最后一行文本后执行,一般用俩处理输出结果
awk 'BEGIN {a=34;print }'
awk -F: 'BEGIN {print "REDHAT"} {print NR;print } END {print "WESTOS"}' /etc/passwd
中间的print 不加东西为打印处理的内容
awk -F: '/bash$/{print}' /etc/passwd 输出bash结尾的行
awk -F: 'NR==3 {print} ' /etc/passwd 打印第三行
awk -F: 'NR%2 ==0 {print} ' /etc/passwd 打印偶数行
awk -F: 'NR <=3 {print} ' /etc/passwd
找到uid小于等于2的用户
awk -F: '$3>=0&&$3 < 2 {print $1,$3}' /etc/passwd
awk 'BEGIN{i=0} {i+=NF} END{print i}' linux.txt
统计文本总字段的个数
统计bash结尾的行数
awk -F: 'BEGIN{i=0}{if($7~/bash$/{i++}}END{print i}' /etc/passwd
awk -F: 'BEGIN{i=0}{if($3<=500&&$3>=0){i++}}END{print i}' /etc/passwd