文本处理工具:   sed  (流编辑器)

   ――基本用法

Sed 是个行编辑器,文本编辑器, 逐行进行

默认不编辑原文件, 仅对模式空间中的数据做处理。

――处理机制

逐行读取, 读取到内存空间中(模式空间,符合模式空间的话),

 在内存中完成,之后显示在屏幕sed

内存空间:sed的模式空间(和模式条件匹配,匹配的使用后面的编辑命令进行编辑)

 

使用语法:

Sed  (选项)‘Addresscommand’ (修饰) FILE……

 

选项:

  -n  ,静默模式, 只跟命令相关,不再默认显示模式空间的内容

  -i   直接修改

  -e 脚本 –e 脚本; 可执行多个脚本。

 -r  表示到 扩展正则表达式

―――――Address:――――――――

1,指定起始行   和结束行,用逗号隔开

    例子 sed ‘1,2’

2, 使用模式 (正则表达式)  /Regexp/

   例子: sed ‘/^root/’

3, /pattern1/,/pattern2/

第一次被模式1匹配到的行开始,到被pattern2匹配到的行结束

4Linenumber   只跟一个数值,

 指定的行

5,$   指定最后的一行   $-1 倒数第二行

6,指定行 +N

从制定行开始 先后N行, 总共N+1行。

 

――――――Command  ――――――――

(如果有变量和变量替换的话,用双引号“”)

d: 删除符合条件的行;

 例子:

     #Sed ‘1,2d’ etc/fstab

 

  p  : 显示符合条件的行,

   例子:

         #Sed ‘1,2d’ etc/fstab

 

a \string ,在行后面追加新行,内容为“string

例子:

   Sed’/^\//a’\#hello word\n#hello word’ /etc/fstab

 

i \string :  在指定的行前面添加新行。内容为“string

 

r  FILE : 将指定的文件的内容添加至符合条件的行处。

例子:

  Sed ‘2r’ /etc/fstab   /etc/inittab

 fstabde 内容添至 inittab下的第二行之后。

 

w :  将指定范围内的行另存至指定的文件中

  从文件中抽出符合的行, 存之另一个文件中

例子:

Sed ‘/root/w /tmp/out.txt’ /etc/fstab

 

s/查找的内容/替换的内容/ : 查找并提出

s/  /   /

例子:

 Sed –n ‘s/oot/OOT/’ /etc/fstab

     g  全局替换       i  忽略字符大小写

 

和原字符冲突的时候, 需要加反斜线,

 

分隔符只要一样都行可以用@@ #### 代替 / 例如 s###   s@@@

       例子:sed 's/oot/OOT/g' /etc/fstab

            sed 's@/@#@g' /etc