语法
sed [参数] '条件 指令(如何处理)' 文件信息
sed -n '/oldboy/p' oldboy.txt
参数:
-n : 使用安静模式,在一般情况所有的 STDIN 都会输出到屏幕上,加入-n 后只打印被 sed 特殊处理的行
-i : 直接修改文档读取的内容,不在屏幕上输出
-e : 多重编辑,且命令顺序会影响结果
条件 指令
条件:要处理的行
1、 first~step:sed -n 2~5p 含义:从第二行开始匹配,隔 5 行匹配一次,即 2,7,12…….。
2、$: 最后一行 sed -n ‘$P’ person.txt 含义:打印persion.txt的最后一行
3、/REGEXP/:正则匹配的内容 sed -n ‘/oldboy/P’ person.txt 含义:打印含有oldboy的行
4、addr1,add2:sed -n ‘1,3P’ person.txt 含义:打印第一行到第三行
5、addr1, +N: sed -n ‘1,+2P’ person.txt 含义:从第一行打印,打印到加2行的数据
6、addr1, ~N:sed -n ‘1,~3P’ person.txt 含义:打印第一行到第三行
指令:要执行的命令
p:打印;命令 p 是打印命令,用于显示模式缓存区的内容。默认情况下, sed 把输入行打印在屏幕上,选项-n 用于取消默认打印操纵。当选项-n 和命令 p 同时出现时, sed 可打印选定的内容
d:删除某行
创建一个文件,内容如下
101,oldboy,CEO
102,zhaoyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
3p
# 查看第三行数据
sed -n '3p' person.txt
# 将有oldboy的行进行显示
sed -n '/oldboy/p' person.txt
# 从第二行开始匹配,隔 5 行匹配一次,即 2,7,12.......。
sed -n 2~5p
# 打印第一行到第三行
sed -n '1,3P' person.txt
# 从第一行打印,打印到加2行的数据
sed -n '1,+2P' person.txt
# 打印第三行、第五行
sed -n '3p;5p' person.txt
# 将oldboy ~ alex信息进行显示:
sed -n '/oldboy/,/Alex/p' person.txt
只查看有oldboy和alex信息:
sed -n '/oldboy/p;/Alex/p' person.txt
# 显示删除第三行之后的数据
sed '3d' person.txt
-----------------------------
# 返回
101,oldboy,CEO
102,zhaoyao,CTO
104,yy,CFO
105,feixue,CIO
3p
真正删除第三行,页面不展示返回值,参考下图
sed -i '3d' person.txt
加 -i 与不加 -i 的区别:
加-i:表示是真的对硬盘中文件进行了编辑,所以会真正的删除。
不加-i:表示是对内存中的信息进行了编辑,所以不会真正的删除硬盘中的信息。
# 查看一段时间内的日志
sed -n '/2021-01-15 11:19:*/,/2021-01-15 11:22:*/p' sys.log
参考1:https://www.cnblogs.com/ginvip/p/6376049.html
参考2:https://www.cnblogs.com/basa/p/11136225.html