Linux三剑客

Linux三剑客

grep

	grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

grep的选项

-n:打印行号
-A(after):打印过滤内容的前N行
-B(before):打印过滤内容的后N行
-C(center):打印过滤内容的前后N行
-E:支持扩展正则   egrep就是grep -E
-v:取反
-o:只打印匹配到的内容
-w:精确匹配
-P:支持Perl正则
-i:忽略大小写
-r:递归检索文件中的内容
-R:递归检索文件中的内容,包括软链接文件
-l:只显示文件名
-h:只显示文件内容
-f:对比文件内容,内容少的文件放在签名,内容多的文件放在后面在取反看不同的文件内容
-c:统计行数     类似与wc -l
-G:支持基础正则
-m:显示前N行内容   类似于head -N

sed

	sed对文本的处理很强大,并且sed非常小,参数少,容易掌握,他的操作方式根awk有点像。在sed中,我们的核心内容主要分为四个部分
	增
	删
	改
	查
还有模式空间与保存空间

sed命令执行流程

执行一个查询命令后,sed做的事情
1.先是按行读取内容
2.每读取一行内容,都会进行一次判断,判断是否是你想要的行
3.如果不是,则判断是不是加了-n选项
4.如果加了-n,就读取下一行
5.如果没加-n,就会将所有内容输出到命令行(默认输出)
6.如果是你想要的行则判断执行的后续动作(p d s a i c)
7.动作处理完成后,输出指定的内容
8.即使内容输出出来了,sed也会继续往后读直到文件的最后一行

sed选项与动作

sed命令选项 选项含义 sed命令动作 动作含义
-n 取消默认输出 p(print) 打印
-r 支持扩展正则 d(delete) 删除
-i 直接修改文件 a(append) 追加
i(insert) 插入
c(replace) 替换

sed命令-查

[root@m01 ~]# cat 1.txt 
ba:123   123
bb:222  123
babs
1234
OOX
o
# sed显示单行内容
[root@m01 ~]# sed  -n '3p' 1.txt 
babs
# sed显示多行内容
[root@m01 ~]# sed  -n '1,3p' 1.txt 
ba:123   123
bb:222  123
babs
# sed模糊匹配
[root@m01 ~]# sed  -n '/ba/p' 1.txt 
ba:123   123
babs
# sed多个模糊匹配
[root@m01 ~]# sed  -nr '/ba|b/p' 1.txt 
ba:123   123
bb:222  123
babs
# sed范围匹配
[root@m01 ~]# sed  -nr '/ba/,/12/p' 1.txt 
ba:123   123
bb:222  123
babs
1234
# sed隔指定行数读取文件内容
[root@m01 ~]# sed  -n '1~2p' 1.txt 
ba:123   123
babs
OOX

sed命令-删

# 删除指定行数
[root@m01 ~]# sed '2d' 1.txt 
ba:123   123
babs
1234
OOX
o
# 删除最后一行
[root@m01 ~]# sed '$d' 1.txt 
ba:123   123
bb:222  123
babs
1234
OOX

sed命令-增

# 替换整行内容
[root@m01 ~]# sed '3cxxx' 1.txt 
ba:123   123
bb:222  123
xxx
1234
OOX
o
# 在指定行后面加入一行内容
[root@m01 ~]# sed '$axxx' 1.txt 
ba:123   123
bb:222  123
babs
1234
OOX
o
xxx
# 在指定行前面插入一行内容
[root@m01 ~]# sed '$ixxx' 1.txt 
ba:123   123
bb:222  123
babs
1234
OOX
xxx
o

sed命令-改

# 基础用法
[root@m01 ~]# sed 's#ba#aa#g' 1.txt 
aa:123   123
bb:222  123
aabs
1234
OOX
o
# 使用正则
[root@m01 ~]# sed 's#[0-9]#777#g' 1.txt 
ba:777777777   777777777
bb:777777777  777777777
babs
777777777777
OOX
o
# 后向引用
[root@m01 ~]# ifconfig eth1|sed -nr 's#^.*inet (.*)  net.*#\1#gp'
172.16.1.61

sed的模式空间

	sed命令逐行处理文件,将当前处理的行写入模式空间进行处理,sed在该行上执行完所有命令后将处理好的行打印到屏幕上,sed处理完一行就将其从模式空间删除,然后将下一行内容写入模式空间中。sed读取文件内容不会将换行符一起读进去,需要加N
# 将文件中的所有换行符替换成空格
N:在读取文件时,让sed把下一行内容读进去
[root@m01 ~]# sed 'N;N;N;N;N;s#\n# #g' 1.txt 
ba:123   123 bb:222  123 babs 1234 OOX o
# 循环N将文件中的所有换行符替换成空格
[root@m01 ~]# sed ':label;N;s#\n# #g;t label' 1.txt 
ba:123   123 bb:222  123 babs 1234 OOX o
posted on   jilei  阅读(126)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示