sed(stream editor) 是非交互式文本流编辑器,它逐行处理文本,依据输入的指令对文本进行转换
基本用法
sed [选项] '脚本' 文件名
# 或者
命令 | sed [选项] '脚本'Tip
sed命令的构造是抽象的,这里我们只举一些常用例子
替换
语法 : s/正则表达式/替换内容/标注
- 标注: 可选参数
g替换所有匹配项目(默认只会替换每行第一个)i忽略大小写p打印发生替换的行 (需要与-n选项一起使用)w将更改写入文件
例如:将系统日志中所有”Error”(忽略大小写)变成”ERROR!!” 并且打印
journalctl | sed -n 's/error/ERROR!!/gip'删除
使用d命令删除行命令有
- 删除具体行
sed '5d'(删除第5行) &sed '2,4d'(删除2-4行) - 删除包含正则表达式的行
/正则表达式/d
打印
默认情况下 sed 是打印所有行,你需要使用参数
-n静默输出让他只打印命令的行
使用p命令删除行命令有
- 打印具体行
sed '5d'(打印第5行) &sed '2,4d'(打印2-4行) - 打印包含正则表达式的行
/正则表达式/d
插入/追加/修改
- 插入
i,追加a, 修改c:[行数](操作符)\新文本or/正则表达式/(操作符)\新文本 - 插入是在匹配行前一行插入
- 追加是在匹配行后一行插入
- 替换是将匹配行替换成新内容
多命令
我们可以使用 ; 或 -e 分隔多命令,其中 ; 需要在单引号里使用 -e 需要在单引号外面使用
删除空行并且用”bar” 替换 “foo”
sed '/^$/d; s/foo/bar/g' filename.txt
# 或者
sed '/^$/d' -e 's/foo/bar/h' filename.txt