sed 流式编辑器/文本过滤
Stream Editor
基于模式匹配过滤/修改文本
语法格式:
sed ‘编辑指令‘ 文件1 文件2
修改前和修改后的内容都会全部输出
sed -n ‘编辑指令‘ 文件1 文件2
只显示 修改过滤后的内容
sed -i ‘编辑指令‘ 文件1 文件2
修改后的内容会被直接替换,不会输出
编辑指令的写法
格式: 【地址1【,地址2】】操作类型
多条指令之间以分号隔开
sed -n ‘3p;5p‘ /etc/hosts
最常用的操作类型
p 输出/打印文本行
n 取下一行文本 (跳过当前行)
d 删除
s 字符串替换
a 追加新的文本
隔行输出文本内容
sed -n ‘p;n‘ file.txt 输出所有奇数行
sed -n ‘n;p‘ file.txt 输出所有偶数行
使用正则表达式
sed -n ‘/w2k8/,$p‘ file.txt
sed -n ‘/\<This>\/p‘ file.txt \<word>\ 表示匹配一个单词
?删除符合条件的行
sed ‘2,3d‘ file.txt 删除2-3行
sed ‘/w2k8/d;$d‘ file.txt 删除包含w2k8的行和最后一行
删除不符合条件的行
sed /2,3!d/ file.txt 删除除了2-3行的其他行
替换符合条件的文本
sed ‘3,4s/yes/no/g‘ file.txt 替换3-4行中的所有yes为no
替换的特殊效果
sed ‘1,2s/^/#/g‘ file.txt 在第1-2行的行首插入# (通常的批量注释)
sed ‘s/yes//g‘ file.txt 删除file.txt中的所有yes (替换为空)