Linux中awk

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值