Linux中awk

xiaoxiao2022-06-11  29

awk

它是一个文本分析工具,grep查找,sed主要是流编辑器,AWK主要是对数据格式的输出和分析,简单的说,把文件逐行读入,以默认空格分割每行,然后再进行分析处理的过程。 AWK 有它自己的编程语言,是三个主创人员的缩写,对数据的排序,对数据处理,输出报告或者报表形式

工作的流程:

1.读取一行数据 2.按照输入分隔符进行每行的拆分,分为n段 3.将每一段设置变量依次为$1-$2,$0是整个一行的neir 4.格式化输出,循环处理其他各行

awk操作:

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和awk比较:

相同点:都是读取每一行进行处理, 不同点: 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)

转载请注明原文地址: https://www.6miu.com/read-4930193.html

最新回复(0)