现在的位置: 首页 > 综合 > 正文

sed学习

2013年08月20日 ⁄ 综合 ⁄ 共 1549字 ⁄ 字号 评论关闭
 

         sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。

   调用sed命令有两种形式:

  • sed [options] 'command' file(s)

  • sed [options] -f scriptfile file(s)

 直接上例子:

    

       sed -e 's/root/shrek/g'   /etc/passwd  替换passwd 文件中root成shrek(-e 允许多台编辑,s替换,g表示替换多个,负责只替换每行第一个)

       sed -e  '/bash/d'  /etc/passwd  删除passwd 中包含bash的行

       sed -n -e  '/\<shrek\>/p'  /etc/passwd  打印passwd中包含shrek单词的行,和-n配合使用(-n取消默认输出) 

        sed -n -e  '/\<shrek\>/s/bash/nologin/p'  /etc/passwd   把文件中包含shrek的行中得bash单词替换成nologin并打印

       sed  -e  '/\<shrek\>/s/bash/nologin/g'  /etc/passwd >/tmp/a

        cp /tmp/a /etc/passwd    把文件中包含shrek的行中所有bash单词替换成nologin并真正修改passwd

        sed -e ''/^#/d' -e '/^$/'   /etc/squid/squid.conf    删除文件中以#开头的行以及空格行

      sed替换: sed  's/{old value}/{new value}'

      多次替换: sed -e 's /mike/todd' -e 's/good/better'

                           sed   's /mike/todd;s/good/better'

       地址是sed 定义编辑域的,没有默认是全文

       地址可以是number,first~step,/regexp

      $ sed '2d' example-----删除example文件的第二行。

      $ sed '2,10d' example-----删除example文件的第二行到10行。

      $ sed '2,$d' example-----删除example文件的第二行到末尾所有行。

      $ sed '$d' example-----删除example文件的最后一行。

     $ sed '1~2d' example-----删除example文件的第一行开始,步长为2的行。

      $ sed '/test/d' example-----删除example文件所有包含test的行。

   sed  -f   sss /etc/passwd

    sss中得内容

    s/bash/nologin

    s/root/shrek

   相当于sed  -e  's/bash/nologin'  -e 's/root/shrek'  /etc/passwd

   还有一种方式,写一个如下的脚本ss1

    #!/bin/sed -f

    s/bash/nologin

    s/root/shrek

     执行./ss1 /etc/passwd也能达到同样的效果

 

------------------运行info sed了解更多

抱歉!评论已关闭.