Stream Editor 字符流编辑器
简称流编辑器。
Sed是操作、过滤和转换文本内容的强大工具。
常用功能有对文件内容快速实现增删改查,其中查询包括过滤和取行(取出指定行)。
语法格式:sed [选项] [sed内置命令字符] [文件]
匹配的内容要放在两个/中间
选项
-n 取消命令的默认输出,只显示匹配处理的行(否则会输出所有)
-i 直接修改文件本身,而不是将修改后的内容展示出来。如果不使用-i只是修改内存中的数据,而不影响磁盘中的文件。
-e 可以指定多个命令
-f 将多条命令写入文件中,再根据文件内容依次执行
sed -f ab.log test.txt
-r 使用扩展正则
内置命令符
a 追加append,在指定行后添加一行或多行文本
sed '1,3a新增文本' my.txt #在1到3行后面各新增一行
d 删除delete,删除匹配的行
i 插入insert,在指定行前添加一行或多行文本
p 打印print,打印匹配行的内容,常与-n一起使用
s 替换substitute,s/regexp/replacement/g 用replacement替换regexp匹配的内容
注:不使用g(全局匹配)时,每一行匹配到第一个后就跳到下一行再进行匹配,使用g的话是匹配到行尾。
注:建议这里的 / 替换为 #
这里第二个a没有匹配到是因为 ^a+ 的意思是以一个或多个a开头,这里开头是每行的开头。
只匹配1到3行:sed '1,3s/^a/b/g' 1.txt