awk:逐行读取文本,默认以空格或tab键为分隔符进行分隔符进行分割,将分隔符所得的各个字段保存到内建变量中,并按模式或者条件执行编辑命令
awk倾向于将一行分为多个字段处理 根据字段处理行内UR
命令格式
awk 选项 '模式或者条件 {操作}' 文件1 文件2
awk -f 脚本文件 文件1 文件2
常用的内建变量
变量名 作用
FS 列分割符指定每行文本的字段分隔符,默认为空格或制表位。也可用选项"-F"表示
NF 当前处理的行的字段个数
NR 当前处理的行的行号
$0 当前处理的行的整行内容
$n 当前处理行的第n个字段(第n列)
RS 行分隔符。awk从文件上读取资料时,将根据RS的定义把资料切割成许多条记录,而awk一次仅读入一条记录,以进行处理。预设值是’\n’
FILENAME 被处理的文件名
“=”用来赋值 “==”才是等于
常用命令举例
awk '(NR%2)==1{PRINT}' testfile 打印奇数行
awk '(NR%2)==0{print} ' testfilel 打印偶数行
awk ‘root/{print}‘ /etc/passwd 取包含root行的内容
awk ’^root/ {print}' /etc/passwd 打印以$结尾得
awk 'BEGIN {x=0} ;/\/bin\bash$/{x++};END {print x}' /etc/passwd 统计以bin/bash结尾的行数
****格式:awk 'BEGIN{...};{...};END{...}' 文件
在awk处理文件都会先执行BEGIN命令里的命令操作
awk -F : ‘$3>500 {print $1,$3}’ /etc/passwd 打印出uid号大于500的