SED(Stream Editor)是一种非交互式的流编辑器,修改流经它的文本内容。sed处理文本时是以行为单位,每处理完一行就会立即打印出来,然后再处理下一行。
默认条件下,sed所有操作只是对“流”的操作,因此不会改变源文件,可通过输出重定向保存处理后的结果或者通过-i参数直接修改源文件本身。
sed [options] 'command' filename 或sed [options][-f<script文件>] filename
options是指sed的命令行参数,sed从filename标准输入。如果操作比较复杂,为了简便,可以把命令写到文件中,然后-f参数调用。
-f<script文件> 以选项中指定的script文件来处理输入的文本文件。
[options]:
- -h或--help 显示帮助。
- -n或--quiet或--silent 仅显示script处理后的结果。
- -V或--version 显示版本信息
动作说明:
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
s :取代,可以直接进行取代的工作。
使用sed在文本中定位文本的方式:
x x为一行号,比如1
x,y 表示行号范围从x到y,如2,5表示从第2行到第5行
/pattern/ 查询包含模式的行,如/disk/或/[a-z]/
/pattern/pattern/ 查询包含两个模式的行,如/disk/disks/
/pattern/,x 在给定行号上查询包含模式的行,如/disk/,3
x,/pattern/ 通过行号和模式查询匹配行,如 3,/disk/
x,y! 查询不包含指定行号x和y的行
1、查看日志文件中某一段时间的日志
sed -n '/起始时间/,/结束时间/p' 日志文件
例如,sed -n '/2018-11-06 18:00:00/,/2018-11-06 18:00:10/p' test.log
显示 2018-11-06 18:00:00到2018-11-06 18:00:10之间的日志。-n 是只打印匹配的行(不打印没有处理的行)
参考: