已学grep 参数
-o 显示过程 (显示grep每次匹配到的内容)
-i 过滤的时候不分大小写(ignore case忽略大小写)
-w 按单词过滤
-v 取反
-n 显示行号
-c 显示包含xxx的行,共多少行
-l (小写L)只显示文件名
-E 支持扩展正则
-A 显示包含xxxx的下x行
-B 显示包含xxxx的上x行
-C 显示包含xxxx上下x行
-R 递归进行过滤
Linux三剑客-sed
老男孩教育-sed命令执行过程
https://www.processon.com/view/link/5bea32c5e4b0ad314e894f53
sed命令分解
sed -n '3 p' oldboy.txt p=print (打印)
参数 条件 命令
sed命令参数
-n 取消默认输出
-r 支持扩展正则
-i 修改文件内容
测试环境准备
lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
sed 查找文件内容
[root@oldboyedu59 /oldboy]# sed -n '5p' lidao.txt
105,feixue,CIO
[root@oldboyedu59 /oldboy]# sed -n '1,5p' lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
[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
[root@oldboyedu59 /oldboy]# egrep 'oldboy|yy' lidao.txt
101,oldboy,CEO
104,yy,CFO
[root@oldboyedu59 /oldboy]# grep 'oldboy\|yy' lidao.txt
101,oldboy,CEO
104,yy,CFO
[root@oldboyedu59 /oldboy]# egrep 'oldboy|yy' lidao.txt
101,oldboy,CEO
104,yy,CFO
[root@oldboyed
[root@oldboyedu59 /oldboy]# sed -n '/102/,/105/p' lidao.txt
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
sed 修改文件内容
[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
a 将内容加到目标行下一行
[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
i 将内容加到目标行上一行
老男孩教育-sed命令格式和功能-2019-v2
https://www.processon.com/view/link/5cb7ede9e4b01941c8b13036
练习环境创建
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!
sed删除之删除 /oldboy/oldboy.txt中的空行
sed '/^/!p' oldboy.txt
grep -v '^$' oldboy.txt
awk
awk '/^$/' oldboy.txt 显示空行
awk '!/^$/' oldboy.txt 不显示空行
不显示文件/etc/ssh/sshd_config 的空行或以#号开头的行
各种姿势:
egrep -v '$|#' /etc/ssh/sshd_config
sed -r '/$|#/d' /etc/ssh/sshd_config
sed -rn '/$|#/!p' /etc/ssh/sshd_config
grep '^[a-Z]' /etc/ssh/sshd_config
awk '!/$|#/' /etc/ssh/sshd_config
[故障集合]那些年学习Linux坑你的故障集合
https://www.jianshu.com/p/99ec5bb4183f
sed 替换
命令解析:
sed 's#oldboy#alex#g' oldboy.txt
目标 替换为什么
s 替换
g global 全局替换
格式:
sed 's#oldboy#alex#g ' oldboy.txt
sed 's@oldboy@alex@g ' oldboy.txt
###
@/oldboy@/alex@
///
AAA
[面试题]老男孩教育-三剑客笔试题集合
https://www.jianshu.com/p/61d8883719ac