三剑客之awk、grep
awk
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片(把每一行的各个列分开,单独处理),切开的部分再进行各种分析处理。
语法:
awk [选项参数] 'awk script'var=value file(s)
或
awk [选项参数] -f scriptfile var=value file(s)
参数说明:
-F fs or --field-separator fs 指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,
如-F:。
-v var=value or --asign var=value 赋值一个用户定义变量。
-f scripfile or --file scriptfile 从脚本文件中读取awk命令。
变量:
NF: number filed 当前行分割后的字段个数。打印的时候,是取出最后一列
NR: number row 表示当前第几行
函数:
toupper():字符转为大写。
tolower():字符转为小写。
length():返回字符串⻓度。
substr():返回子字符串。
sin():正弦。
cos():余弦。
sqrt():平方根。
rand():随机数。
BEGIN语句/END语句
awk 'BEGIN{ commands } pattern{ commands } END{ commands }'
BEGIN语句块 在awk开始从输入流中读取行 之前 被执行,这是一个可选的语句块,比如变量初始化、打印输出表格的表头等语句通常可以写在BEGIN语句块中。
END语句块 在awk从输入流中读取完所有的行 之后 即被执行,比如打印所有行的分析结果这类信息汇总都是在END语句块中完成,它也是一个可选语句块。
pattern语句块 中的通用命令是最重要的部分,它也是可选的。如果没有提供pattern语句块,则默认执行{ print },即打印每一个读取到的行,awk读取的每一行都会执行该语句块。
BEGIN {math = 0 english = 0 computer = 0 printf "NAME NO. MATH ENGLISH COMPUTER TOTAL\n" printf "---------------------------------------------\n"
}
#运行中
{ math+=$3 english+=$4 computer+=$5 printf "%-6s %-6s %4d %8d %8d %8d\n", $1, $2, $3,$4,$5, $3+$4+$5
}
#运行后END
{ printf "---------------------------------------------\n" printf " TOTAL:%10d %8d %8d \n", math, english, computer printf "AVERAGE:%10.2f %8.2f %8.2f\n", math/NR, english/NR, computer/NR
}
结果:
grep
能使用正则表达式搜索文本,并把匹配的行打印出来。
命令的基本格式:
grep [option] pattern file
对于这个命令我们经常使用的一个场景如下:
ps -ef|grep xxxx
grep 常用的参数:
-A<行数 x>:除了显示符合范本样式的那一列之外,并显示该行之后的 x 行内容。
-B<行数 x>:除了显示符合样式的那一行之外,并显示该行之前的 x 行内容。
-C<行数 x>:除了显示符合样式的那一行之外,并显示该行之前后的 x 行内容。
-c:统计匹配的行数
-e :实现多个选项间的逻辑or 关系
-E:扩展的正则表达式-f 文件名:从文件获取 PATTERN 匹配
-F :相当于fgrep-i --ignore-case #忽略字符大小写的差别。
-n:显示匹配的行号-o:仅显示匹配到的字符串
-q: 静默模式,不输出任何信息
-s:不显示错误信息。
-v:显示不被 pattern 匹配到的行,相当于[^] 反向匹配
-w :匹配 整个单词
grep egrep fgrep对比
grep可以使用基本正则表达式进行内容查找匹配
egrep可以使用扩展的正则表达式进行内容查找匹配
fgrep只能查找固定内容,无法使用正则进行匹配
三剑客之awk、grep相关推荐
- Linux三剑客之awk详解
第一篇 awk简介与表达式实例 一种名字怪异的语言 模式扫描和处理,处理数据和生成报告. awk不仅仅是linux系统中的一个命令,而且是一种编程语言:它可以用来处理数据和生成报告(excel):处理 ...
- Linux系统Shell脚本第五章:shell数组、正则表达式及文件三剑客之AWK
目录 一.shell数组 1.数组分类 2.定义数组方法 二.正则表达式 1.元字符 2.表示次数 3.位置锚定 4.分组 5.扩展正则表达式 三.文本三剑客之AWK 1.awk 2.使用格式 3.处 ...
- 文本三剑客之AWK详解
文本三剑客之AWK awk简介 AWK是一种优良的文本处理工具.它不仅是 Linux中也是任何环境中现有的功能最强大的数据处理引擎之一.这种编程及数据操作语言(其名称得自于它的创始人 Alfred A ...
- linux三剑客之awk命令详解
linux三剑客之awk命令详解 awk 是一个处理文本的编程语言工具,能用简短的程序处理标准输入或文件.数据排序.计算以及生成报表等等.awk工具主要用于格式化输出,可以用类似于处理表格的方式处理文 ...
- linux三个冒号加端口,不看绝对后悔的Linux三剑客之awk实战精讲
一.Linux三剑客之awk命令精讲 第1章 awk基础入门 1.1 awk简介awk不仅仅时linux系统中的一个命令,而且是一种编程语言,可以用来处理数据和生成报告(excel).处理的数据可以是 ...
- shell编程系列15--文本处理三剑客之awk格式化输出printf
shell编程系列15--文本处理三剑客之awk格式化输出printfprintf的格式说明符格式符 含义 %s 打印字符串 %d 打印十进制数 %f 打印一个浮点数 %x 打印十六进制数 %o 打印 ...
- shell编程系列20--文本处理三剑客之awk常用选项
shell编程系列20--文本处理三剑客之awk常用选项awk选项总结选项 解释 -v 参数传递 -f 指定脚本文件 -F 指定分隔符 -V 查看awk的版本号[root@localhost shel ...
- 传说中的Linux三剑客命令之grep(三剑客老幺)别人只知道了而我却做到了
传说中的Linux三剑客命令之grep(三剑客老幺)别人只知道了而我却做到了 grep(三剑客老幺) 1.介绍 Given one or more patterns, grep searches in ...
- linux日志查看面试题,Linux 运维面试题 三剑客(sed awk grep)整理
一. 三剑客-基础部分题目 1. 选择 1.在给定文件中查找与条件相符字符串的命令及查找某个目录下相应文件的命令为:(多选)(AC)A:grep B:gzip C:find D:sort 2.在给定文 ...
- Linux文本处理三剑客(awk、grep、sed)
目录 grep 简介 实际使用 小结 sed awk 名字由来 强大的文本处理工具 语法 域 模式&动作 结合正则 复合表达式 printf 格式化输出 内置变量 内置函数 awk脚本 gre ...
最新文章
- Linux正则和grep命令
- Ubuntu设置中修改密码,提示长度太短或太简单【终极解决办法】
- 在C++里,有两种方法创建对象:
- 微型计算机技术及应用 习题答案,微型计算机技术及应用习题答案.doc
- 深度学习在CV领域的进展以及一些由深度学习演变的新技术
- java 19 - 11 异常的注意事项
- 尝试:Script Lab,快速 O365 开发工具//SL01)
- spring mvc学习(9):路径参数
- [剑指offer][JAVA]面试题第[09]题[用两个栈实现队列][LinkedList]
- html轮播图淡入淡出,一个简洁的Jquery效果 banner轮播(1) 淡入淡出效果
- ios 开发需要看的书籍
- SQL 2005数据库函数基本应用
- linux下静默安装weblogic 12
- charles抓包工具的使用:手机抓包设置和安装证书
- 御剑+php,ps创意制作一个御剑飞行效果教程
- 电动汽车相关功率计算
- 一篇文教你使用python Turtle库画出“精美碎花小清新风格树”快来拿代码!
- 实现一个直播视频app源码的邀请码功能
- js判断扑克牌同花顺
- 小公司的大数据基础服务集成平台
热门文章
- 计算机设计大赛国赛演讲稿
- 笔试题————一套实用的渗透测试岗位面试题
- Cathy Zhang automation test
- 51单片机PID算法控制无刷直流电机proteus仿真
- 在Windows Server 2022系统上安装 Brother MFC-7450打印机驱动
- python flask上传文件_Python之利用Flask上传文件、Flask_RESTful
- S32k Flexcan 手写驱动,不使用SDK
- 打峡谷之巅有眼缘 那不如我们自己写个猜数字 C语言
- java搜索拉钩_java实现拉钩网上的FizzBuzzWhizz问题示例
- vo bo po dao pojo dto