sed简介
- sed工作流程
1、sed是一种在线、非交互式的编辑器,他一次处理一行内容,处理时,吧当前处理的行存储在临时缓冲区中:缓冲区叫模式空间 pattern space。
2、然后sed命令处理缓冲区中的内容,处理完成后,在推动到屏幕。如此一行处理完成后再处理下一行,直到文件末尾。
3、文件内容并没有改变,除非使用重定向存储回去 - 命令格式
- 支持正则表达式
1、基本元字符集:^ $ . * [] [^] \< \> \( \) \{ \}
2、扩展元字符: ? + { } | ( )
1、使用扩展元字符方式:sed -r - 简单使用了解sed
sed -r 'p' /etc/passwd
sed -r -n '' /etc/passwd
sed -r -n '/root/p' /etc/passwd
sed -r -n '/root/=' /etc/passwd
sed -r 's/root/admin/' /etc/passwd
sed -r 's/root/admin/g' /etc/passwd
sed -r 's/root/admin/gi' /etc/passwd
sed -r '/root/d' /etc/passwd
sed -r '1,3d' passwd
sed -r '/^root/,5d' /etc/passwd
sed -r '/^root/,+5d' /etc/passwd
sed -r '/root/!d' /etc/passwd
sed -r '1~2d' /etc/passwd
sed命令/选项
命令 | 功能 | 案例 |
---|
a | 在当前行后添加一行或多行 | sed -r ‘2a111’ passwd; sed -r ‘s/root/a111’ passwd |
c | 用新的文本修改(替换)当前行中的文本 | sed -r ‘2c111’ passwd; sed -r ‘s/root/c111’ passwd |
d | 删除行 | 略 |
i | 在当前行之前插入文本 | sed -r ‘2i111’ passwd; sed -r ‘s/root/c111’ |
l | 列出非打印字符 | |
p | 打印行 | |
n | 从当前行的下一行处理 | sed -r ‘/root/{n;d}’ /etc/passwd |
! | 对选中行以外的所有行应用命令 | sed -r ‘s/root/!c111’ |
s | 查询标志 | |
| g 在行内全局替换 | sed -r ‘s/root/admin/g’ /etc/passwd |
| i 忽略大小写 | sed -r ‘s/root/admin/gi’ /etc/passwd |
r | 从文件中读取 | sed -r ‘/root/r /etc/mydata’ /etc/passwd ;将mydata读取到匹配到root的行,行后追加 |
w | 将行写入文件 | sed -r ‘/root/w /etc/mydata’ /etc/passwd; 源文件mydata内容被覆盖 |
h | 把模式空间里的内容复制到暂存缓冲区(覆盖) | |
H | 把模式空间里的内容复制到暂存缓冲区(追加) | |
g | 取出暂存换从去的内容,将器复制到模式空间(覆盖) | |
G | 取出暂存换从去的内容,将器复制到模式空间(追加) | |
x | 交换暂存缓冲区与模式空间的内容 | |
选项 | 功能 |
---|
-e | 允许多项编辑 |
-f | 指定sed脚本文件名 |
-n | 取消默认的输出,静默输出 |
-i | inplace 修改源文件内容 |
-r | 支持扩展元字符 |
模式空间、暂存空间使用案例
sed -r 'g' file
sed -r 'G' file
sed -r '/root/h'