Linux AWK使用案例

目录

一、AWK

📓AWK使用意义

📌用法

二、AWK实用案例

📓案例1  awk通过分界符查找第几个元素或者在元素加title


一、AWK

📓AWK使用意义

    awk其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母。实际上 AWK 的确拥有自己的语言: AWK 程序设计语言 , 三位创建者已将它正式定义为“样式扫描和处理语言”。它允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。awk 是一种很棒的语言,它适合文本处理和报表生成,其语法较为常见,借鉴了某些语言的一些精华,如 C 语言等。在 linux 系统日常处理工作中,发挥很重要的作用,掌握了 awk将会使你的工作变的高大上。 awk 是三剑客的老大,利剑出鞘,必会不同凡响。

📌用法

用法形式:  awk '{pattern + action}' {filenames}

   其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配内容时所执行的一系列命令。花括号({})不需要在程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组。 pattern就是要表示的正则表达式,用斜杠括起来。 awk语言的最基本功能是在文件或者字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进行其他文本操作。完整的awk脚本通常用来格式化文本文件中的信息。 通常,awk是以文件的一行为处理单位的。awk每接收文件的一行,然后执行相应的命令,来处理文本。

二、AWK实用案例

📓案例1  awk通过分界符查找第几个元素或者在元素加title

1)  awk '{print $0}' /etc/passwd

2)  awk -F":" '{ print $1 }' /etc/passwd

3)  awk -F":" '{ print $1 $3 }' /etc/passwd

4) awk  -F":" '{ print "username: " $1 "\t\tuid:" $3" }' /etc/passwd

📓案例2  查看目标文件(100行)内第20到第30行的内容

1)awk '{if(NR>=20 && NR<=30) print $1}' /etc/passwd

📓案例3 查看目标文件中多个分界符指定元素内容

1)awk -F '[ ,]+' '{print $3" "$8}' test.txt

📓案例4  加入BIGEN和END模块统计目标文件行数

1) awk 'BEGIN {count=0;print "[start] user count is ",count} {count=count+1;print $0} END{print "[end] user count is ",count}' /etc/passwd

📓案例5  统计当前目录的文件大小之和

1) ll |awk 'BEGIN {size=0;} {size=size+$5;} END{print "[end]size is ",size}'

📓案例6    FS内置变量适应案例

FS="[[:space:]+]" 一个或多个空白空格,默认的

FS="\t" 一个或多个 Tab 分隔

FS="[" ":]+" 以一个或多个空格或:分隔

1)  awk -F [" ":]+ '{print $1,$2,$3}' hello.txt

📓案例7    字段数量 NF使用

1)awk -F ":" 'NF==8{print $0}' test.txt

📓案例8    记录数量 NR使用

ifconfig eth0|awk -F [" ":]+ 'NR==2{print $4}'

📓案例9 OFS 输出字段分隔符

 awk 'BEGIN{FS=":";OFS="#"}{print $1,$2,$3}' test.txt

📓案例10 取出passwd中第3列以1或2开头内容,显示这一行

awk -F:  '$3 ~ /^[12]/'   passwd

📓案例11 取出passwd中第3列以1或2开头内容,显示这一行

awk -F:   '$3~/[0-3]$/ {print $1,$3} '   /etc/passwd

📓案例12 过滤passwd中第3列大于0小于1000内容,显示第1列和第3列

awk -F ':' '$3>0 && $3 < 1000{print $1,$3}' /etc/passwd

📓案例13 过滤passwd中第3列大于0小于1000内容,显示第1列和第3列

1)awk -F '=' 'NR==6{print $2}' /etc/sysconfig/network-scripts/ifcfg-eth0

2)awk -F=    '/IPADDR/ {print $2}' /etc/sysconfig/network-scripts/ifcfg-eth0

📓案例14 统计/etc/passwd中可登录用户数量

awk '/bash$/ {c++} END{print c}' /etc/passwd

📓案例15 统计目标文件中空行的数量  

awk '/^$/ {j++} END{print j}' test.txt

📓案例16 统计日志中一共用了多少流量 

awk  '{sum=sum+$1} END{print sum}' liu.log

📓案例17 统计日志中一共用了多少流量 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

R_水手

感谢你对创作者的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值