awk学习笔记

awk的工作流程:
将文件的一行读到内存,然后按分隔符将该行进行分段,其默认的分隔符是空格和TAB。


常用格式1:
awk /pattern/ {command1;command2.....}  file


用法1 指定分隔符 用-F'分隔符'
awk -F: '{print $1}' /etc/passwd


用法2 指定匹配位置用$n ~
awk -F: '$5 ~ /root/ {print $2}' /etc/passwd


常用格式2:
awk 'BEGIN{command}/pattern/{command1;command2....}'


用法3 用BEGIN{command}来指定分隔符(FS为AWK内置变量,表示分隔符)
awk 'BEGIN{FS=":"}$5 ~ /deamon/ {print $2}' /etc/passwd


用法4 用OFS变量设置输出分隔符(默认为空格)
awk 'BEGIN{FS=":";OFS="--"}$5 ~ /daemon/ {print $1,$2}' passwd.log

用法5 NF变量示例(NF表示每行的字段数)
awk 'BEGIN{FS=":"} {print NF}' passwd.log
或者awk -F: '{print NF}' passwd.log


用法6 NR变量(处理行在原文件中的行号)
awk '/^adm/{print NR}' passwd.log


用法7 自定义变量
awk 'BEGIN{FS=":";i=0}/sbin/{i++}END{print i}' passwd.log


解释:
  先定义一个变量i=0,查找匹配sbin的行,如有一行则i+1,所有行查找匹配完毕后执行print aa,实现统计匹配sbin的行数。
注意:
  引用变量不需要加$,在AWK中,只有引用$1,$2,$3...的时候才需要用$

你可能感兴趣的:(awk学习笔记)