温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

awk和grep使用实例分析

发布时间:2022-03-16 16:36:45 阅读:388 作者:iii 栏目:大数据
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

这篇文章主要讲解了“awk和grep使用实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“awk和grep使用实例分析”吧!

awk && grep 简介

日常工作中经常会使用 awk 和 grep 等命令做简单的数据统计工作,简便高效。awk 命令的最基本功能是在文件或者字符串抽取信息。通常 awk 是以文件的一行为处理单位的。awk每接收文件的一行,然后执行相应的命令,来处理文本。grep 命令则主要用于查找文件里符合条件的字符串。

awk

示例文件

// example.txta 10 20030 10020 300c 10 100c 20 800c 30 600

关键参数

  • -F:指定分隔符
  • FILENAME:文件名
  • NR:行号
  • NF:每行的列数
  • $0:变量是指整条记录
  • BEGIN 和 END:BEGIN 被放置在没有读取任何数据之前执行,一般用来做初始化操作,而 END 被放置在所有的数据读取完成以后执行,一般用来输出处理结果

示例

# 指定分隔符为空格,每次都打印文件名行号列数当前行的内容awk  -F ' '  '{print "filename:"FILENAME,"linenumber:"NR,"columns:"NF"linecontent:"$0}' example.txt# 打印第一列awk -F ' ' '{print $1}' example.txt# 打印倒数第一列awk -F ' ' '{print $NF}' example.txt# 打印倒数第二列awk -F ' ' '{print $NF-1}' example.txt# 打印第二行整行awk -F ' ' 'NR==2 {print "filename:"FILENAME,"linecontent:"$0}' example.txt# 第二列求和awk '{sum+=$2END {print "sum: " sum}' example.txt# 第一列为 key,第二列为 value,求每个 key 对应的所有 value 的和awk '{sum[$1]+=$2END {for(idx in sum) print idx, sum[i]}' example.txt# 统计第一列的元素分别出现了几次awk '{sum[$1]+=1}END{for(i in sum)print i,sum[i]}' example.txt# 统计前两列元素出现的次数awk '{sum[$1" "$2]++}END{for(i in sum)print i,sum[i]}'# 统计第三列值 500 和 >500 的行数awk -F ' ' 'BEGIN{i=0;j=0}{if($3<=500){i++}else{j++}}END{print i,j}' example.txt# 统计第三列值 200、≤500(>200)500 的行数awk 'BEGIN{i=0;j=0;k=0}{if($3<=200){i++}else if($3<=500){j++}else{k++}}END{print i,j,k}' example.txt# 循环语句awk 'BEGIN{for(i=1;i<=5;i++){print i}}'awk 'BEGIN {{i=1}do{print i;i++while (i<=5)}'

grep

关键参数

  • -a :将 binary 文件以 text 文件的方式搜寻数据
  • -c :计算找到 '搜寻字符串' 的次数
  • -i :忽略大小写的不同,所以大小写视为相同
  • -n :顺便输出行号
  • -v :     反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行
  • --color=auto :可以将找到的关键词部分加上颜色

示例

grep [-acinv] [--color=auto] '搜寻字符串' filename# 取出 /etc/passwd 文件中有 root 的行grep root /etc/passwd# 取出 /etc/passwd 文件中有 root 的行,同时显示行号grep -n root /etc/passwd# 将没有出现 root 的行取出来grep -v root /etc/passwd# 将没有出现 root 和 nologin 的行取出来grep -v root /etc/passwd | grep -v nologin# 使用 dmesg 列出关键信息,再以 grep 找出包含 eth 的行,将关键字所在的行的前 2 行和后 3 行一起取出来显示dmesg | grep --A3 -B2 --color=auto 'eth'# 在当前目录搜索带 energywise 行的文件grep 'energywise' *    # 在当前目录及其子目录下搜索带 energywise 行的文件grep -r 'energywise' *# 在当前目录及其子目录下搜索带 energywise 行的文件,但是不显示匹配的行,只显示匹配的文件grep --r 'energywise' *

感谢各位的阅读,以上就是“awk和grep使用实例分析”的内容了,经过本文的学习后,相信大家对awk和grep使用实例分析这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

原文链接:https://my.oschina.net/u/4662457/blog/4588847

AI

开发者交流群×