sed(流编辑器),用来在命令行中直接更改一个文件中的内容,这个命令对于使用

shell脚本自动批量更改大量文本文件比较有用.如你当前目录中有10000个文本文件

,假设文件名从text.1到text.10000,若你希望更改这10000个文件,一种方法是使用

如vi这样的文本编辑器来逐一进行更改,而对于优秀的管理员来说它们可能会书写一个

shell脚本来使用sed批量进行更改.本文就是sed这个命令的快速入门教程.

(1).基本格式

   sed [-nefri] [动作] [Input_File]

选项:

    -n :表示安静模式操作,也就是只将被更改的行输出,没更改的行不输出,默认sed

        是输出所有的行

    -e Scrip:指定sed的执行命令可以指定多个这个选项

    -f Script_File:指定执行一个包含sed命令的脚本文件

    -r:支持扩展的正则表达式(默认只支持基础的正则表达式)

    -i:直接操作原文件,默认是不更改原文件的,而只是将更改结果直接输出到

       标准输出上,可以使用这个选项来让sed直接更改原文件

动作:

   基本格式: [n1[,n2]] Function

   说明:n1和n2用来指定修改的范围(从第n1行到第 n2行),他们不一定必须指定

       若都没指定则表示修改整个文件,若没有指定n2则表示修改的范围为从n1

       到文件末尾.

   注:n1,n2可以为数字,表示第N行(从1开始),当然也可以用'/Pattern/'来指定

      表示使用查找来指定函数,即查找到最先包含Pattern的行为该指定的行数
  
   Function有以下值:

   (1).插入

       [1].i String:表示当前行前面插入一行,内容为String

       [2].a String:表示当前行后面插入一行,内容为String

   (2).删除

       d:表示将指定的行删除

   (3).替换

       [1].c String:指定整行替换为String

       [2].s/Find_String/Replace/:表示用Replace替换Find_String

   (4).打印

       p:表示将选择的行打印出来

下面是一些实例:

假设文件 example.txt的内容如下
#############################example.txt内容开始###############
line1 hello world1
line2 hello world2
line3 hello world3
#############################example.txt内容结束###############

(1).在第1行后面插入一行,内容为Insert after line1
sed -i -e '1a Insert after line1' example.txt
结果example.txt内容为:
line1 hello world1
Insert after line1
line2 hello world2
line3 hello world3

(2).在第一行前面插入一行,内容为Insert before line1
sed -i -e '1i Insert before line1' example.txt
结果:
Insert before line1
line1 hello world1
Insert after line1
line2 hello world2
line3 hello world3

(3).删除第2到第4行
sed -i -e '2,4d' example.txt
结果:
Insert before line1
line3 hello world3

(4).打印第2行
sed  -e '2p' example.txt

(5).将第2行替换为line2 hello world
sed -i -e '2c line2 hello world' example.txt
结果:
Insert before line1
line2 hello world

(6).替换第二行的hello world为world hello
sed -i -e '2s/hello world/world hello/' example.txt
结果:
Insert before line1
line2 world hello

好了sed简单入门就讲到这里了,由于sed命令实在太好用了,也太强大了,因此要

熟练使用sed还必须参考完整的sed手册页或其他高手写的教材,本文只是一个简单

的入门教材而已