Linux三剑客:grep、sed、awk
通配符
通配符 |
含义 |
* | 匹配任意长度的字符 |
? | 匹配任意单个字符 |
[ ] | 匹配指定范围内中任意单个字符 |
[^] | 匹配除括号内的范围的单个字符 |
[a-z], [A-Z], [0-9], [a-z0-9]
[[:upper:]]:所有大写字母
[[:lower:]]:所有小写字母
[[:alpha:]]:所有字母
[[:digit:]]:所有数字
[[:alnum:]]:所有的字母和数字
[[:space:]]:所有空白字符
[[:punct:]]:所有标点符号
grep
语法
grep [选项] 过滤条件 文件名
选项:
-n------------显示行号
-v-------------取反,意思是匹配除过匹配内容之外的内容
-i--------------忽略大小写
-E-------------开启扩展正则
-o-------------只显示匹配到的内容
举例
1.显示/etc/passwd文件下的两位数或三位数
[root@group7 home]# grep -E '\<[0-9]{2,3}\>' /etc/passwd
2.找出/etc/passwd下,以P或p开头的内容
写法一:
[root@group7 home]# grep -i -E '^(P|p)' /etc/passwd
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
写法二:
[root@group7 home]# grep -i '^[P|p]' /etc/passwd
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
3.找出ifconfig命令的ip地址
[root@group7 home]# ifconfig ens33 | grep 'inet .* netmask' |grep -o '\([0-9]\{1,3\}.\)\{3\}.[0-9]\{1,3\}'
4.echo 输出一条绝对路径,用grep找出其绝对路径
[root@group7 home]# echo /var/log/dmesg | grep -E -o '[^/].*/?$'
var/log/dmesg
sed
语法
sed [选项] 地址定界 编辑的内容 文件名
选项:
-n-----------不输出模式空间的内容到屏幕,常与-p一起使用
-e------------多次编辑
-i-------------将编辑的内容修改到文件
-r-------------支持扩展正则
内置命令
用于对文件进行操作,如增删改查
内置命令符号 | 解释 |
a | 添加,在指定行后面添加内容 |
i | 添加,在指定行前面添加内容 |
d | 删除匹配行 |
i | 将修改内容保存到文本 |
s/正则/替换内容 /g |
匹配正则的内容,然后替换 |
p | 打印匹配行的内容,常与-n一起使用 |
匹配范围
范围 | 解释 |
空地址 | 匹配全文 |
单个地址 | 匹配指定行 |
/xxxxx/ | 匹配指定的内容 |
范围区间 | a,b #a到b行;a,+b #a行向下b行 ; |
步长 | 1~2,表示奇数行;2~2表示偶数行 |
举例
[root@nebulalinux03 ~]# cat sed.txt
northwest NW Charles Main 4.0 .99 3 35
western WE Sharon Gray 8.3 .97 5 23
southwest SW Lewis Dalsass 4.7 .8 2 19
southern SO Suan Chin 5.1 .96 4 15
southeast SE Patricia Hemenway 4.0 .7 4 16
eastern EA TB Savage 7.7 .84 5 22
northeast NE AM Main Jr. 5.1 .96 3 13
north NO Margot Weber 3.4 .87 5 8
central CT Ann Stephens 2.7 .94 5 14
1.输出文件第二行和第三行内容
[root@group7 home]# sed -n '2,3p' sed.txt
western WE Sharon Gray 8.3 .97 5 23
southwest SW Lewis Dalsass 4.7 .8 2 19
2.过滤出含有west的行
[root@group7 home]# sed -n '/west/p' sed.txt
northwest NW Charles Main 4.0 .99 3 35
western WE Sharon Gray 8.3 .97 5 23
southwest SW Lewis Dalsass 4.7 .8 2 19
3.删除含有north的行
[root@group7 home]# sed '/north/d' sed.txt
western WE Sharon Gray 8.3 .97 5 23
southwest SW Lewis Dalsass 4.7 .8 2 19
southern SO Suan Chin 5.1 .96 4 15
southeast SE Patricia Hemenway 4.0 .7 4 16
eastern EA TB Savage 7.7 .84 5 22
central CT Ann Stephens 2.7 .94 5 14
4.将文件中的central替换成earth
[root@group7 home]# sed 's/central/earth/g' sed.txt
northwest NW Charles Main 4.0 .99 3 35
western WE Sharon Gray 8.3 .97 5 23
southwest SW Lewis Dalsass 4.7 .8 2 19
southern SO Suan Chin 5.1 .96 4 15
southeast SE Patricia Hemenway 4.0 .7 4 16
eastern EA TB Savage 7.7 .84 5 22
northeast NE AM Main Jr. 5.1 .96 3 13
north NO Margot Weber 3.4 .87 5 8
earth CT Ann Stephens 2.7 .94 5 14
5.在southeast行后添加hello
[root@group7 home]# sed '/southeast/a hello' sed.txt
northwest NW Charles Main 4.0 .99 3 35
western WE Sharon Gray 8.3 .97 5 23
southwest SW Lewis Dalsass 4.7 .8 2 19
southern SO Suan Chin 5.1 .96 4 15
southeast SE Patricia Hemenway 4.0 .7 4 16
hello
eastern EA TB Savage 7.7 .84 5 22
northeast NE AM Main Jr. 5.1 .96 3 13
north NO Margot Weber 3.4 .87 5 8
central CT Ann Stephens 2.7 .94 5 14
6.在southeast行前添加hello
[root@group7 home]# sed '/southeast/i hello' sed.txt
northwest NW Charles Main 4.0 .99 3 35
western WE Sharon Gray 8.3 .97 5 23
southwest SW Lewis Dalsass 4.7 .8 2 19
southern SO Suan Chin 5.1 .96 4 15
hello
southeast SE Patricia Hemenway 4.0 .7 4 16
eastern EA TB Savage 7.7 .84 5 22
northeast NE AM Main Jr. 5.1 .96 3 13
north NO Margot Weber 3.4 .87 5 8
central CT Ann Stephens 2.7 .94 5 14
7.使用sed过滤出ifconfig的ip
写法一:
[root@group7 home]# ifconfig ens33 | sed -n '2p' | sed -rn 's#.*inet(.*)netmask.*#\1#p'192.168.75.130
写法二:
[root@group7 home]# ifconfig ens33 | sed -n '2p' | sed 's/.*inet //' | sed 's/netmask.*//'
192.168.75.130
sed高阶用法
h:把模式空间中的内容覆盖至保持空间中;
H:把模式空间中的内容追加至保持空间中;
g:把保持空间中的内容覆盖至模式空间中;
G:把保持空间中的内容追加至模式空间中;
x:把模式空间中的内容与保持空间中的内容互换;
n:覆盖读取匹配到的行的下一行至模式空间中;
N:追加读取匹配到的行的下一行至模式空间中;
d:删除模式空间中的行;
D:删除多行模式空间中的所有行;
示例:
sed -n 'n;p' FILE:显示偶数行;
sed '1!G;h;$!d' FILE:逆序显示文件的内容;1!G:第1行不执行“G”命令,从第2行开始执行。$!d:最后一 行不删除(保留最后1行)
sed ’$!d' FILE:取出最后一行;
sed '$!N;$!D' FILE:取出文件后两行;
sed '/^$/d;G' FILE:删除原有的所有空白行,而后为所有的非空白行后添加一个空白行; sed 'n;d' FILE:显示奇数行;
sed 'G' FILE:在原有的每行后方添加一个空白行;
举例
1.显示/etc/passwd文件中的偶数行,并显示行号
[root@group7 home]# sed -n 'n;=;p' /etc/passwd
2.为文件/etc/passwd文件每行开头添加#
[root@group7 home]# sed '1,$s/\(.*\)/#\1/g' /etc/passwd
awk
语法
awk 参数 模式 ‘{动作}’ 文件
awk内置变量
$0 -----------表示完整的输入记录
$n-------------指定分隔符后,当前的第几个字段
FS-------------字段分隔符,默认为空格
NF--------------分割后,当前行有多少个字段
NR--------------当前行数
FNR------------输入的文件的行数
FS----------------输入分割符,默认是空格
OFS--------------输出分隔符
RS----------------输入换行符,指定后,按照指定的符号进行换行输出
ORS-------------输出分隔符,指定后,按照指定的符号换行
awk必须外层 单引号,内层双引号
awk参数
-F ------------指定分隔符,默认为空格
-v<变量=值>--------------在开始执行前为变量值
-f--------------从脚本文件中读取awk命令
举例
vim sed.txt
northwest NW Charles Main 4.0 .99 3 35
western WE Sharon Gray 8.3 .97 5 23
southwest SW Lewis Dalsass 4.7 .8 2 19
southern SO Suan Chin 5.1 .96 4 15
southeast SE Patricia Hemenway 4.0 .7 4 16
eastern EA TB Savage 7.7 .84 5 22
northeast NE AM Main Jr. 5.1 .96 3 13
north NO Margot Weber 3.4 .87 5 8
central CT Ann Stephens 2.7 .94 5 14
~
1.显示文件的第五行
[root@group7 home]# awk 'NR==5' sed.txt
southeast SE Patricia Hemenway 4.0 .7 4 16
2.显示文件所有内容
[root@group7 home]# awk '{print $0}' sed.txt
3.显示文件2到5行内容,并且添加行号
[root@group7 home]# awk 'NR==2,NR==5 {print NR,$0}' sed.txt
2 western WE Sharon Gray 8.3 .97 5 23
3 southwest SW Lewis Dalsass 4.7 .8 2 19
4 southern SO Suan Chin 5.1 .96 4 15
5 southeast SE Patricia Hemenway 4.0 .7 4 16
4.显示文件的第一列,倒数第二列和最后一列
[root@group7 home]# awk '{print $1,$(NF-1),$NF}' sed.txt
northwest 3 35
western 5 23
southwest 2 19
southern 4 15
southeast 4 16
eastern 5 22
northeast 3 13
north 5 8
central 5 14
5.用awk取出ip地址信息
[root@group7 home]# ifconfig ens33 | awk 'NR==2' | awk '{print $2}'
192.168.75.130
6.取出/etc/passwd文件下的用户名和最后的名称,并且在中间加@符号
写法一:
[root@group7 home]# awk -F: -v OFS="#" '{print $1,$NF}' /etc/passwd
写法二:
[root@group7 home]# awk -F: '{print $1"#"$NF}' /etc/passwd
7.显示文件/etc/passwd和sed.txt文件各自的行号
[root@group7 home]# awk '{print FNR,$0}' /etc/passwd sed.txt
8.在文件sed.txt文件中,每行添加一个#再输出
[root@group7 home]# awk -v ORS="###\n" '{print NR,$0}' sed.txt
awk格式化输出
1.使用awk打印文件前四行内容
[root@group7 home]# awk 'NR<5{print $0}' sed.txt
northwest NW Charles Main 4.0 .99 3 35
western WE Sharon Gray 8.3 .97 5 23
southwest SW Lewis Dalsass 4.7 .8 2 19
southern SO Suan Chin 5.1 .96 4 15
2.打印userinfo.txt文件中区号为916的人的名字
[root@group7 home]# cat userinfo.txt
Mike Harrington:[510] 548-1278:250:100:175
Christian Dobbins:[408] 538-2358:155:90:201
Susan Dalsass:[206] 654-6279:250:60:50
Archie McNichol:[206] 548-1348:250:100:175
Jody Savage:[206] 548-1278:15:188:150
Guy Quigley:[916] 343-6410:250:100:175
Dan Savage:[406] 298-7744:450:300:275
Nancy McNeil:[206] 548-1278:250:80:75
John Goldenrod:[916] 348-4278:250:100:175
Chet Main:[510] 548-5258:50:95:135
Tom Savage:[408] 926-3456:250:168:200
Elizabeth Stachelin:[916] 440-1763:175:75:300
[root@group7 home]# awk -F"[ :]" '$3~/916/{print $1}' userinfo.txt
Guy
John
Elizabeth
print和printf的区别
printf不会做换行,而是直接输出所有
举例
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 . 匹配任意字符 ...
最新文章
- rpm安装的mysql如何数据迁移_【鲲鹏翱翔】数据库04-MySQL5.7.28移植安装指南-RPM包方式...
- 如何使用 Java 中执行 Windows 的 CMD 命令
- 如何了解自己的认知偏差_了解吸引力偏差
- 学习android 画板源代码,Android实现画画板案例
- 使用Red Hat Enterprise Linux的实时内核
- ADO.NET 如何读取 Excel (下)
- 第2章 理解memcached的内存存储
- 硬件开发学习需要掌握的基础知识
- 从ResNet101到ResNet50
- 计算机与不确定性原理,傅里叶变换和不确定性原理
- 共享虚拟主机是不是服务器,共享虚拟主机、独享虚拟主机还是云服务器?
- 【Android】【UI】解决DialogFragment反复使用引起的并发问题和状态错误问题
- 如何查询oracle 的版本
- python找出素数_python找素数
- 兼容并“包”NLP评价指标:Robustness Gym框架
- KYC 技术详解:对金融行业与隐私合规的价值和意义
- html3d轮播图片效果,炫酷3D透视轮播图特效
- mdrill安装(2)
- 计算机硬盘ssd,如何查看电脑硬盘接口_如何查看电脑固态硬盘接口-win7之家
- 招商基金数字化转型下的研发管理|发布会精彩回顾
热门文章
- day13_下 Class中三大护法 及常用属性 单例模式(扩展)
- 均值漂移Mean Shift原理及推导过程
- byte和bit的区别,字节和比特,1兆等于多少字节,等于多少比特
- 58同城2015校招笔试、一面、二面经历
- [转]第一次用joomla做网站的一点感悟
- 语音识别研究综述——阅读笔记4(总结与展望)
- carsim学习日记1
- 电动车NFC一键启动(仪表总成、电源锁)_Ci522 Ci523_小体积超低成本13.56M非接触式读写器芯片
- 2015小米校招【研发类】面试真题经验分享
- 如何通过技术手段批量删除公众号文章?