Linux三剑客(grep、sed、awk)
Linux三剑客
- 正则表达式
- 正则表达式(regular expression)?
匹配有规律的东西:手机号、身份证号、匹配日志;
使用一些符号表达一些重复出现、大小写、开头/结尾含义;
- 应用场景
Linux三剑客使用,开发语言;
过滤有规律的内容,尤其是日志;
- 正则注意事项
所有符号为英文符号;
学习正则,通过grep命令学习,grep加上单引号;
给grep、egrep加上颜色alias grep=’grep --color=auto’ alias egrep=’egrep --color=auto’;
注意系统的字符集:en_US.UTF-8,如出现问题修改字符集为C export LANG=C;
配合grep -o(只显示匹配的内容)参数学习
- 正则符号
基础正则:
- ^ 以……开头的行 例:grep ‘^og’ my.txt 从my.txt中找以og开头的行;
- $ 以……结尾的行 例:grep ‘og$’ my.txt 从my.txt中找以og结尾的行;
- ^$ 空行 例:grep -nv ‘^$’ my.txt 排除空行
- . 任意一个字符 例:grep ‘.’ my.txt 显示除空行外的内容
- \ 转义字符 例:grep ‘\.$’ my.txt 匹配以.结尾的的行
转义字符序列:\n 回车换行;\t tab键
- * 前一个字符连续出现0次或0次以上 例:grep ‘0*’ my.txt,包括为空的内容
- .* 所有内容 ;正则表达式的贪婪性:.*表示所有或*连续出现的时候,会尽可能贪婪的匹配更多,
- [] [asd] 一次匹配任意一个字符(a或s或d) 例:grep ‘[asd]’ my.txt
[a-z] [A-Z] [0-9] [a-zA-z]==[a-Z]== -i [a-z]
[^abc] 匹配除abc以外的内容
扩展正则:
- + 前一个字符连续出现1次或1次以上,例:egrep -o ‘[0-9]+’ my.txt,匹配数字
- | 或者;例:egrep ‘[my|you]+’ my.txt,匹配my或you的数字
- () 被括起来的内容,表示一个整体(字符);反向引用sed
例:egrep ‘wom(a|e)n’ my.txt ==egrep ‘woman|women’ my.txt
- {} 连续出现 o{n,m} 前一个字母o至少连续了n次,至多连续出现了m次
o{n} 前一个字母o连续了n次
o{n,} 前一个字母o至少连续出现了n次,>=n
o{,n} 前一个字母o至多连续出现了n次,<=n
- ? 连续出现,前一个字符出现0次或1次
例:egrep ‘go?d’ my.txt == egrep ‘god|gd’ my.txt
- 三剑客特点和应用场景
命令 |
特点 |
场景 |
grep |
过滤 |
过滤速度最快 |
sed |
替换、修改文件内容、取行 |
替换/修改文件内容 取某个范围的内容(9:00-10:00日志) |
awk |
取列,统计计算 |
取列 对比、比较 统计、计算 |
- 三剑客grep
-i 忽略大小写
-E 启用POSIX扩展正则表达式
-P 启用perl正则
-o 只输出正则表达式匹配的内容
-w 整字匹配
-v 不匹配的
-n 输出行号
-A after,显示匹配内容的下5行
-B before,显示匹配内容的前5行
-C contxt,显示匹配内容的前后5行
-c 统计出现了多少行,类似于wc -l
- 三剑客sed
- 功能
功能 |
||
s |
替换substitute |
|
d |
删除delete |
|
p |
显示print |
|
cai |
增加c/a/i |
- Sed核心应用
查找格式 |
||
‘2p’ |
指定行号查找 |
|
‘1,5p’ |
指定行号范围查找 |
|
‘//p’ |
类似grep过滤,//里面可以写正则,加-r参数使用扩展正则 |
‘/sid/p’ |
‘/10:00/,/11:00/p’ |
表示范围的过滤(结束条件找不到会显示到最后一行) |
|
‘3d’ |
删除指定行 |
不需要加-n |
c |
replace,替代这行的内容 |
|
a |
append,向指定的行或每一行追加内容(行后面) |
sed ‘3a dfsd,sdfsd’ my.txt,在第三行下面追加…… |
i |
Insert,向指定的行或每一行插入内容(行前面) |
|
s |
s###g,默认替换第一个,g是全局 |
sed -n ‘4,$p’ my.txt 找第4行到最后一行
sed -nr ‘/^$|*/!p’ my.txt 遇到空行和*不显示
echo 123456 |sed -r ‘s#(.*)#<\1>#g’ 输出<123456>
先保护再使用(.*)表示所有,<\1>表示在第一个括号内容上加<>
- 三剑客awk
1、
名词 |
awk中叫法 |
说明 |
行 |
记录,record |
每一行默认通过回车分割 |
列 |
字段、域、field |
每一行默认通过空格分割 |
- 取行
awk |
||
NR==1 |
取出第一行 |
|
NR>=1&&NR<=5 |
取1到5行 |
|
// |
//里写过滤条件 |
//,// 取范围 |
- 取列
-F 指定分隔符,指定每一列结束标记(默认为空格、连续空格、tab键)
$ 取出某一列, 如:awk ‘{print $5,$9}’ | column -t 打印第5、9列对齐显示
$0 整行的内容
$NF 最后一列
- awk内置变量
内置变量 |
||
NR |
记录号,行号 |
|
NF |
每行有多少字段(列) |
|
OFS |
每一列以什么分割,默认空格 |
- awk模式
awk |
-F”[ /]+” |
‘NR==3{print $3}’ |
命令 |
选项 |
‘条件{动作}’ |
- awk正则
正则 |
awk正则 |
|
^ 表示以……开头 |
$3~/^g/ 第3行以g开头的列 |
|
$ 表示以……结尾 |
$3~/g$/ 第3行以g结尾的列 |
|
^$ 空行 |
空行 |
- 特殊模式BEGIN{}和END{}
模式 |
含义 |
应用场景 |
BEGIN{} |
{}里内容会在awk读取文件前执行 |
|
END{} |
{}里内容会在awk读取文件后执行 |
|
- 统计方法
统计方法 |
||
i++ |
i=i+1 |
统计次数 |
sum=sum+??? |
sum+=??? |
求和 |
array[]++ |
array[]=array+1a |
数组分类统计,中括号写要统计的列 |
awk ‘/^$/{i++}END{print i}’ /etc/log 统计空行
seq 100 |awq ‘{sum=sum+$1}END{print sum}’ 求1加到100的和
- awk数组
shell数组 |
awk数组 |
|
形式 |
array[0]=name array[1]=number |
array[0]=name array[1]=number |
使用 |
Echo ${array[0]} ${array[1]} |
print array[0] array[1] |
批量输出数组内容 |
for i in ${array[*]} do echo $i done |
for i in array print array[i] |
Linux三剑客(grep、sed、awk)相关推荐
- 15分钟搞定Linux三剑客 grep sed awk
剑客grep 来者何人 grep是linux上的字符串搜索匹配命令.这个名字来自于linux编辑器vim的一个命令g/re/p,表示全局匹配某个正则表达式并打印出来,这也体现了grep自身的功能. 基 ...
- Linux三剑客 grep sed awk 详细使用方法
Linux中最重要的三个命令在业界被称为"三剑客",它们是awk,sed,grep. 我们现在知道Linux下一切皆文件,对Linux的操作就是对文件的处理,那么怎么能更好的处理文 ...
- Shell ❀ 三剑客 - Grep + Sed + Awk
文章目录 八.三剑客 - Grep + Sed + Awk 1.Grep - 过滤 1.1 常用grep参数 1.2 使用方法 2.Sed - 行匹配 2.1 执行原理 2.2 常见语法 2.3 使用 ...
- 三剑客grep sed awk
三剑客 正则(RE)表达式 应用场景 规则 注意事项 正则符号 基础正则 扩展正则 正则实例 正则 VS 通配符 三剑客 grep sed sed核心应用 awk awk执行过程 内置变量 awk 正 ...
- Linux高级专题详解--shell编程大全(shell变量,if语句,case语句,for循环,while循环,函数调用,数组,正则表达式,shell脚本三剑客--grep,sed,awk家族)
shell编程 初始shell 程序 语言 编程 ---------------------------------- 语言 自然语言:汉语.英语 计算机语言:c语言.c++.(java php py ...
- 深入浅出linux三剑客之sed必杀技一例
缘起:上完培训课后,同学们对sed加正则处理问题的热情高涨,氛围相当好,但是,有个别同学还是有些晕乎,因此,撰写此文.此例如果搞熟练了,sed和正则的大部分常用技术你掌握起来就简单了. 如果还有不会的 ...
- linux三剑客及正则表达(grep,sed,awk)
首先我们现在知道Linux下一切皆文件,对Linux的操作就是对文件的处理,那么怎么能更好的处理文件呢?这就要用到我们上面的三剑客命令. 在说这三个命令前我们要插入一个小插曲就是"正则表达式 ...
- linux grep sed awk
linux 文本编辑命令grep sed awk(转) grep grep (global search regular expression(RE) and print out the li ...
- Linux实战教学笔记12:linux三剑客之sed命令精讲
第十二节 linux三剑客之sed命令精讲 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件 ...
- 正则表达式与扩展正则表达式(grep, sed, awk)
Linux中用来在文件中搜索字符串的命令,如grep, sed, awk等命令支持正则表达式与扩展正则表达式. 1. 基础正则表达式 符号 解释 示例 * 匹配0次或多次 b.*t . 匹配任意字符 ...
最新文章
- 刘偲:AI+艺术 | 青源 Talk 第 11 期
- 在kubernetes集群中部署mysql主从
- 极大似然估计_极大似然估计、极大后验估计和贝叶斯估计
- power linux 安装系统,powershell 安装服务器
- 基础数据仓库环境搭建(一)数据仓库概述
- springboot @PropertySource+@Value注入properties配置文件属性值
- OpenCASCADE:使用DRAW绘图
- 用计算机进行资料检索工作是,用计算机进行资料检索工作是属于计算机应用中的什么...
- C语言union关键字
- include包含头文件的语句中,双引号和尖括号的区别
- 吴孟超:用一生为理想去奋斗 丨纪念吴孟超医生
- PowerDesigner 表名、字段大小写转换
- java线程wait()使一个线程一直运行,一直提供服务
- webservice的css哪里添加,XML+XSLT+CSS+JQuery+WebService组建Asp.Net网站
- Centos7下安装python3
- VMware vSAN 的内部版本号和版本 (2150753)
- jQuery Validate 表单验证插件----Validate简介,官方文档,官方下载地址
- shader变体是什么_[Unity/shaderlab]关于着色器变体
- Unity3D实习生面试题总结-图形学相关
- Win10 无法保存对hosts权限所作的更改 拒绝访问
热门文章
- hwaddr和macaddr的区别
- android p cts camera测试 android.hardware.camera2.cts.CaptureRequestTest#testEdgeModeControl fail
- Windows 文件系统格式 Raw格式转换NTFS
- 数字图像处理不得不知的点(1)
- 无线网络dns服务器设置,无线网络的dns怎么设置才正确
- layui调用相册功能和点击按钮调用相册功能
- cmd下批量pingIP地址
- java前景以及职业发展方向
- 2018中国服务器市场出货量年成长23%,华为出货创新高
- 美团实习| 周记(二)