它是一个文本分析工具,grep查找,sed主要是流编辑器,AWK主要是对数据格式的输出和分析,简单的说,把文件逐行读入,以默认空格分割每行,然后再进行分析处理的过程。 AWK 有它自己的编程语言,是三个主创人员的缩写,对数据的排序,对数据处理,输出报告或者报表形式
1.读取一行数据 2.按照输入分隔符进行每行的拆分,分为n段 3.将每一段设置变量依次为$1-$2,$0是整个一行的neir 4.格式化输出,循环处理其他各行
awk [option] ‘program’{‘ACTION STATEMENTS’} file -F 指定字段的分隔符(FS) -v 自定义变量 ACTION STATEMENTS: 取出文件1.txt的后5行,显示第二个字段和第四个字段
tail -5 ./1.txt | awk -v FS=":"‘{print $2,$4}’取出文件1.txt的后5行,然后显示第二个字段,在该字段的前面显示hello字符
tail -5 ./1.txt |awk ' {print “hello:”$2}'awk -v FS=":" ‘{print $1,$3}’ /etc/passwd
awk -F: '{print NF}' /etc/passwd 打印每行按:分割的个数在/etc/passwd文件中,如果用户的ID 大于1000,则usertype=common否则等于system,然后输出$1和usertype(两种方法)
`awk -F: '{$3>999?usertype="common":usertype="system" :print $1,$3,usertype}' /etc/passwd` awk -F : '{if($3 > 1000) {print $1 " usertype=common";} else{print $1 " usertype=system"}}' /etc/passwd相同点:都是读取每一行进行处理, 不同点: sed:但是sed是整行进行处理,并且处理的方式有a追加,i修改,s///g替换 action :-e ‘command’ awk:它处理的颗粒度更细,是每行里面的不同字段都能处理,并且可以以编程的方式进行 处理 awk -F “:” {} file
{}里面可以有逻辑表达式的多种形式
awk -F “:” {} file
{for(){}}
{if(){}}
{while(){}}
awk -F “:” {for(i=0;i<10;i++){print i}} file(/etc/passwd)