day08 sed 流编辑器常用选项和内部命令
sed 流编辑器
sed操作软连接文件小bug
# 对软连接进行操作后 元数据并不会发生变发 只是改变了软连接的数据
sed和grep不一样,不管是否找到指定的模式,
它的退出状态都是0 只有当命令存在语法错误时,sed的退出状态才不是0
sed 命令的组成
命令由”地址+命令“两部分组成,命令如p、d,更多详解第三章节,本节我们主要介绍地址
地址用于决定对流入模式空间的哪些行进行编辑,如果没有指定地址,sed将处理流入模式空间的所有
行。
PS: 可以对文件进行增删改查 替换
选项:
-n #取消默认输出
-r #支持扩展正则使用
-i #改变文件内容
-e #允许多项编辑
-f #指定sed脚本文件名
内部指令:
p #print 打印
d #删除 排除
a #追加 将内容追加指定内容的后面
i #插入 将内容插入到指定的内容的前面
s #替换
g #全局
i #忽略大小写 (搭配sg使用的)
\n #换行符
\t #tab键
= #显示行号
实例:
查过滤
- 查包含root的行 /root/p
2.查以root开头的行 /^root/p
2.-r 支持扩展正则 | 或者
3.打印不连续的行
4.打印某个字符到另个字符的所有行
5.打印连续的行
6.打印单行
删除 排除用法跟打印差不多 把p打印换成d删除符就行了
1.删除包含root字符的行
2.删除第一行到最后一行 $表示结尾最后一行
-i 选项 操作对文件生效
1.-i 正真改变文件
内部命令 a追加
1.将内容追加到地五行的后面
2.将多行内容追加到文件中 \n 换行符 \t tab 键
3.根据字符串进行追加内容
内部命令i插入 在选择的数据前面插入内容
1.在第一行的前面插入数据
2.在最后一行的前面插入数据
内部命令 改 替换
s :替换 g: 全局 i: 不区分大小写
语法; sed 's#old旧字符#new新字符#g' 文件名
1.全局替换root改成admin
- 在每个root后面加上一个test
3.给文件的每行前面加上#
4.删除每行前面的#
5.将某个字符全部删除
排除空行删除空行
PS: ^ 以什么开头 $以什么结尾 加在一起就是^$ 排除有空格或者tab键的空行
1.排除空行删除空行
后向应用 () 扩展正则
PS:前期定义 后期调用 \1 \2 第几个括号的内容就用第几个
1.取ip地址
2.将passwd的第一列跟最后一列进行调换
3.打印行号