sed的工作过程:
sed剪辑器逐行处理文件(或输入),并将输出结果发送到屏幕。sed把当前正在处理的行保存在一个临时缓冲区中,这个缓冲区称为模式空间或临时缓冲。sed处理完模式空间中的行后(即在该行上执行完sed命令后),就把该行发送到屏幕上(除非之前有命令删除这一行或取消打印操作)。sed每处理完一行就将其从模式空间中删除,然后将下一行读入空间,进行处理和显示。处理完输入文件的最后一行后,sed便结束运行。sed把每一行都存在临时缓冲区中,对这个副本进行编辑,所以不会修改或破坏源文件。
如果要把正则表达式分隔符改成另一个字符,比如,只要在这个字符前加一个反斜杠,在字符后跟上正则表达式,在跟上这个字符即可。
例:sed -n '/cREcp' filename
sed -n '/12//10//04/p' filename
sed -n '/x12/10/04xp' filename
后两个都是查找"12/10/04"字符串。
sed的命令及其功能:
命令 | 功能 |
a/ | 在当前行后添加一行或多行 |
c/ | 用新文本修改(替换)当前行中的文本 |
d | 删除行 |
i/ | 在当前行之前插入文本 |
h | 把模式空间里的内容复制到暂存缓冲区 |
H | 把模式空间里的内容追加到暂存缓冲区 |
g | 取出暂存缓冲区的内容,将其复制到模式空间,覆盖该处原有内容 |
G | 取出暂存缓冲区的内容,将其复制到模式空间,追加在原有内容后面 |
l | 列出非打印字符 |
p | 打印行 |
n | 读入下一输入行,并从下一条命令而不是第一条命令开始对其的处理 |
q | 结束或退出sed |
r | 从文件中读取输入行 |
! | 对所选行以外的所有行应用命令 |
s | 用一个字符串替换另一个 |
替换标志
g | 在行内进行全局替换 |
p | 打印行 |
w | 将行写入文件 |
x | 交换暂存缓冲区与模式空间的内容 |
y | 将字符转换为另一字符(不能对正则表达式使用y命令) |
sed选项
选项 | 功能 |
-e | 允许多项编辑 |
-f | 指定sed脚本文件名 |
-n | 取消默认的输出 |