三剑客-sed之增删改查有哪些知识点?Linux入门
老男孩IT教育
技术博客
2020年11月19日 15:29
linux命令是用户告诉计算机去执行什么操作的指令。三剑客学习的过程中,sed有哪些需要掌握?老男孩教育Linux培训课程,分有全日制脱产班、周末提升班和在线网络班等不同学习模式。
一.sed 命令的格式
完整格式
sed | -n | '3s#oldboy#oldgirl#gp' | filename |
---|---|---|---|
sed 命令 | sed 参数 | 3 表示第 3 行 s 表示替换 gp 表示标记(flag) | filename |
简单格式
这里记住条件命令即可 条件就是你要找哪 1 行,可以是行号或范围等等. 命令就是满足条件后,要做什么,可以是显示(p),删除(d),替换(s),增加(c a i)等等
找谁 | 干啥 |
---|---|
条件 | 命令 |
二.sed 命令常用参数
参数 | 含义 |
---|---|
-n | 取消默认输出 |
-i | 修改文件内容 |
-i.bak | 先备份文件为 oldboy.txt.bak 然后修改文件内容 |
-r | 支持扩展正则 |
-f | 指定 sed 脚本 |
三.sed 核心功能之查找(p)
1.模拟的文件
cat >~/lidao.txt<<EOF
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
EOF
2.根据行号显示某 1 行
[root@oldboyedu59 ~]# sed -n '5p' lidao.txt
105,feixue,CIO
3.根据行号范围进行显示
[root@oldboyedu59 ~]# sed -n '1,5p' lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
4.进行过滤(类似 grep 或 egrep)
[root@oldboyedu59 /oldboy]# sed -n '/oldboy/p' lidao.txt
101,oldboy,CEO
[root@oldboyedu59 /oldboy]# sed -n '/[a-z]/p' lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
找出文件中包含 oldboy 或 yy 的行
[root@oldboyedu59 /oldboy]# sed -nr '/oldboy|yy/p' lidao.txt
101,oldboy,CEO
104,yy,CFO
5.通过正则表达式进行范围过滤
[root@oldboyedu59 /oldboy]# sed -n '/102/,/105/p' lidao.txt
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
四.sed 核心功能之增加(c a i)
命令 | 含义 |
---|---|
c | replace 清空这行内容然后写入新内容 |
a | append 在这行下面追加内容 |
i | insert 在这行上面插入内容 |
[root@oldboyedu59 /oldboy]# cat lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
105,feixue,CIO
110,lidao,COCO
[root@oldboyedu59 /oldboy]# sed '3a119,xiaohong,UFO' lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
102,zhangyao,CTO
119,xiaohong,UFO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
105,feixue,CIO
110,lidao,COCO
[root@oldboyedu59 /oldboy]# cat lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
102,zhangyao,CTO
119,xiaohong,UFO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
105,feixue,CIO
110,lidao,COCO
[root@oldboyedu59 /oldboy]# sed '3i12306,lidao,HO' lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
12306,lidao,HO
102,zhangyao,CTO
119,xiaohong,UFO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
105,feixue,CIO
110,lidao,COCO
五.sed 核心功能之删除(d)
1.测试文件
I am oldboy teacher!
I teach linux.
I like badminton ball,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our size is http://blog.oldboyedu.com
my qq is 1351441522
not 4900000448
my god,i am not oldbey,but OLDBOY!
2.删除 /oldboy/oldboy.txt 中的空行
sed '/^$/d' oldboy.txt
sed -n '/^$/!p' oldboy.txt
grep -v '^$' oldboy.txt
awk 作为扩展
awk '/^$/' oldboy.txt
awk '!/^$/' oldboy.txt
本文经授权发布,不代表老男孩教育立场。如若转载请联系原作者。