day17三剑客grep sed

1.grep 过滤

参数

-i 不区分大小写
-v 取反
-o 显示过程(匹配到就显示出来)
-n 显示行号
-E 支持扩展正则(egrep)
-c 统计包含xxx一共多少行

-w 取字符串(单词)
-l 找包含字符串的文件名不显示内容
-R 递归进行过滤

-A 显示找出来的内容以及接下来几行
-B 显示找出来的内容以及上面几行
-C -C2 显示找出来的内容以及上下各两行

2.sed (stream editor 流编辑器)

增删改查

执行过程

参数:-n 取消输出
seq -n '3p' /oldboy/oldboy.txt


sed执行过程
sed命令格式和功能

功能:增删改查

1.查:p print(查看)

根据行号进行查找
查看lidao.txt这个文件中第三行的内容
sed -n '3p' lidao.txt

[root@yuyingqian ~]# cat lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
[root@yuyingqian ~]# sed -n '3p' lidao.txt
103,Alex,COO

根据行号范围进行查找
查看lidao.txt这个文件中第二行到第四行的内容
sed -n'2,4p' lidao.txt

[root@yuyingqian ~]# sed -n '2,4p' lidao.txt
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO

根据正则进行过滤
查看lidao.txt文件中带oldboy这个内容的行
sed -rn '/oldboy/p' lidao.txt

[root@yuyingqian ~]# cat lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
[root@yuyingqian ~]# sed -rn '/oldboy/p' lidao.txt 
101,oldboy,CEO

使用正则表示范围
查看lidao.txt文件中带102内容的行到带105内容的行
sed -n '/102/,/105/p' lidao.txt

[root@yuyingqian ~]# sed -n '/102/,/105/p' lidao.txt 
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
2.增(类似>>)

参数 a : append 在第几行下增加内容
在第二行下插入180,yuyingqian,ZNB
sed '2a180,yuyingqian,ZNB' lidao.txt

[root@yuyingqian ~]# cat lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
[root@yuyingqian ~]# sed '2a180,yuyingqian,ZNB' lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
180,yuyingqian,ZNB
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO

参数 i: 在第几行上面增加内容
在第二行上插入180,yuyingqian,ZNB
sed '2i180,yuyingqian,ZNB' lidao.txt

[root@yuyingqian ~]# sed >'2i180,yuyingqian,ZNB' lidao.txt
101,oldboy,CEO
180,yuyingqian,ZNB
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO

参数 c :replac 先清空再写入
把第二行内容替换为180,yuyingqian,ZNB
sed '2c180,yuyingqian,ZNB' lidao.txt

[root@yuyingqian ~]# cat lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
[root@yuyingqian ~]# sed '2c180,yuyingqian,ZNB' lidao.txt
101,oldboy,CEO
180,yuyingqian,ZNB
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
3.删

参数 d:删除
把第二行内容删除掉
sed '2d' lidao.txt

[root@yuyingqian ~]# cat lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
[root@yuyingqian ~]# sed '2d' lidao.txt
101,oldboy,CEO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
4.改

参数s:sub(默认替换第一个字符) g(全局替换)
格式:sed 's###g'
把oldboy替换为oldgirl

[root@yuyingqian ~]# cat lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
[root@yuyingqian ~]# sed 's#oldboy#oldgirl#g' lidao.txt
101,oldgirl,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO

后向引用(在前面两个(##)把你要的内容保护起来后两个(##)中间用\数字引用)
把123456 改为<123456>

[root@yuyingqian ~]# echo 123456 | sed -r 's#(.*)#<\1>#g'
<123456>

把123456 改为12<34>56

[root@yuyingqian ~]# echo 123456 | sed -r 's#(..)(..)(..)#\1<\2>\3#g'
12<34>56

把123456改为<1><2><3><4><5><6>

[root@yuyingqian ~]# echo 123456 | sed -r 's#(.)#<\1>#g'
<1><2><3><4><5><6>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 说明:本篇文章来自老男孩,这里只做备份记录 功能说明 Sed是Stream Editor(流编辑器)缩写,是操作、...
    think_lonely阅读 4,066评论 0 2
  • 王文卓 课堂笔记 三剑客: grep 过滤 -E 支持扩展正则===egrep -o 只显示匹配到的内容 显示g...
    Wave_e430阅读 1,414评论 0 0
  • 一、前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件等等。如果我们相对这些文件进行一些...
    以七v为书阅读 5,470评论 0 5
  • 三剑客: grep 过滤 -E 支持扩展正则===egrep -o 只显示匹配到的内容 显示grep执行过程 -...
    高博666阅读 1,355评论 0 0
  • 我以为见到你了 在深潜的隐秘之地 你带来的 陪伴我一生的哀伤 是如此无法原谅 为这 我们不会再见 相逢 只能在文字...
    Cherie雨丝阅读 1,328评论 0 2

友情链接更多精彩内容