- tip
awk经过改进生成的新的版本
nawk
,gawk
. linux下是gawk
- 格式
awk [options] command file(s)
awk -f awk-script-file file(s)-
command = pattern
{
awk操作命令}
- pattern: 正则表达式;逻辑判断式
- awk操作命令:
- 内置函数:print() printf() getline()..
- 控制指令:if(){..}else{..}; while(){..};
-
options
-
options
: -F field-separator(默认为空格)
awk -F ':' '{print $3}' /etc/passwd
-
-
command = pattern
- awk内置变量
- $0:表示整个当前行
- $1:每行第一个字段
- $2:每行第二个字段
- NR:每行的记录号
- NF:字段数量变量
- FILENAME:正在处理的文件名
- 案例
awk -F ':' '{printf("Line:%3s Col:%s User:%s\n",NR,NF,$1)}' passwd
awk -F ':' '{if ($3>100) print "Line: "NR,"User: "$1}' passwd
sed '/Error/p' fresh.log | awk '{print $1}'
awk '/Error/{print $1}' fresh.log
- awk逻辑
~,!~
:匹配正则表达式
==,!=,<,>
:判断逻辑表达式
awk -F ':' '$1~/^m.*/{print $1}' passwd
awk -F ':' '$3>100{print $1,$3}' passwd
awk -F ':' '$3==100{print $1,$3}' passwd
awk -F ':' '$3!=100{print $1,$3}' passwd
- windows下练习
# 打印ip
ipconfig | sed -n "/IPv4.*/p" | awk -F ":" "{print $2}"
ipconfig | awk -F ":" "/IPv4/{print $2}"
- awk扩展格式
BEGIN{}{}END{}
awk -F ':' 'BEGIN{print "Line Col User"}{print NR,NF,$1}END{print"----"FILENAME"---"}' passwd
ls -l | awk 'BEGIN{size=0}{size+=$5}END{print " size is " size}'
awk -F ':' 'BEGIN{count=0}$1!~/^$/{count++}END{print " count = "count}' passwd
awk -F ':' 'BEGIN{count=0}$1!~/^$/{count++}END{print " count= "count}' passwd
awk -F ':' 'BEGIN{count=0}{if ($3>100) name[count++]=$1}END{for (I=0;i<count;i++) print I,name[I]}' passed
netstat -anp | awk '$6~/CONNECT|LISTEN/{sum{$6}++}END{for (i in sum) print i,sum[i]}'
网友评论