常规用法
sed 是一种不用交互的流编辑器
命令格式
sed [options] ‘command’ file(s)
sed [options] -f scriptfile file(s)
sed和grep不一样,不管是否找到指定的模式,它的退出状态都是0,只有当命令存在语法错误时。sed的退出状态才是非0.
支持正则表达式
sed支持正则表达式,模式是括在斜杠间
要支持扩展元字符,使用sed -r
# n为静默输出,p为打印,/^root/为正则表达式,匹配以root开头的行
sed -rn '/^root/p' passwd
# 将passwd文件中的root全部替换成alice,s表示替换,g表示全局,i表示忽略大小写
sed -r 's/root/alice/gi' passwd
# 查找带有root的行进行删除,d表示删除
sed -r '/root/d' passwd
# 查找带有root的行进行删除并更新到原文件,-i是将改动变更到原文件
sed -ri '/root/d' passwd
- #替换/
当仅为查找是可以替换为 sed -r ‘#root#d’ passwd,第一个#需要加转义
当为查找替换时sed -r ‘s#root#alice#gi’ passwd,不需要加转义
sed定址
定址是用于决定对哪些进行编辑。形式可以是数字、正则表达式或二者结合。如果没有指定址,sed将处理输入文件中的所有行。
- 数字
sed -r '3d' passwd # 删除第三行
sed -r '1,3d' passwd # 删除第一行到第三行
sed -r '3,$d' passwd # 删除第三行到第最后一行
sed -r '1~2d' /etc/passwd #删除所有奇数行
sed -r '0~2d' /etc/passwd #删除所有偶数行
- 正则
sed -