UNIX shell学习(2)-sed

来源:互联网 发布:京东金融数据大赛 编辑:程序博客网 时间:2024/05/22 08:26

 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

取消默认的输出

 

原创粉丝点击