linux中sed命令详解

一、sed简介

           sed 是一种新型的,非交互式的编辑器。它能执行与编辑器 vi 和 ex 相同的编辑任务。sed 编辑器没有提供交互式使用方式,使用者只能在命令行输入编辑命令、指定文件名,然后在屏幕上查看输出。sed 编辑器没有破坏性,它不会修改文件,除非使用 shell 重定向来保存输出结果。默认情况下,所有的输出行都被打印到屏幕上。

二、sed 工作过程

            sed 编辑器逐行处理文件(或输入),并将输出结果发送到屏幕。sed 的命令就是在 vi和 ed/ex 编辑器中见到的那些。sed 把当前正在处理的行保存在一个临时缓存区中,这个缓存区称为模式空间或临时缓冲。sed 处理完模式空间中的行后(即在该行上执行 sed 命令后),就把该行发送到屏幕上(除非之前有命令删除这一行或取消打印操作)。sed 每处理完输入文件的最后一行后,sed 便结束运行。sed 把每一行都存在临时缓存区中,对这个副本进行编辑,所以不会修改或破坏源文件。

三、sed命令使用

             -n   使用安静模式,在一般情况所有的 STDIN 都会输出到屏幕上,加入-n 后只打印被sed 特殊处理的行 

             -e   多重编辑,且命令顺序会影响结果

             -f   指定一个 sed 脚本文件到命令行执行

             -r   使用扩展正则

             -i   直接修改文档读取内容,不显示输出

        Sed操作命令

            sed 操作命令告诉 sed 如何处理由地址指定的各输入行。如果没有指定地址,sed 就会处理输入的所有的行。

            x:指定行号

            x,y:指定从x到y的行号范围

            / pattern/:查询包含模式的行

            / pattern/,x:从与 pattern的匹配行到x号行之间的行

           x,/ pattern/:从x号行到与 pattern的匹配行之间的行

           x,y!:查询不包括x和y行号的行

           r:从另一个文件中读文件

           w:将文本写入到一个文件

           y:变换字符

           q:第一个模式匹配完成后退出

           l:显示与八进制ASCⅡ码等价的控制字符

           {}:在定位行执行的命令组

          p:打印匹配行

          =:打印文件行号

          a\:在定位行号之后追加文本信息

         i\:在定位行号之前插入文本信息

         s:使用替换模式替换相应模式

         d:删除定位行

         n:读取下一个输入行,用下一个命令处理新的行

四、sed命令的使用

          1.删除

          例如: ①将/etc/passwd 的内容列出并打印行号,同时,将2-5行删除显示

                          nl /etc/passwd | sed '2,5d'

                       ②删除第2行 :nl /etc/passwd | sed '2d'

                       ③删除第三行到最后一行:nl /etc/passwd | sed '3,$d'

                       ④删除批注行  :sed '/^#.*/d' /etc/inittab

                       ⑤删除注释以及空白行   sed  '/^#.*/d'  /etc/inittab|sed  '/^\s*$/d'

           2.插入

            例如:①在第一行后加上一行test :nl /etc/passwd | sed '2a test'

                       ②在第一行前加上一行test  : nl /etc/passwd | sed '2i test'

                       ③在第二行后加入三行test   :nl /etc/passwd|sed '2a 111\n222\n333'

           3.替换

            例如:①将2-5行内容取代为 'number2-5'   :nl /etc/passwd | sed '2,5c number2-5'

                       ②把1.txt 文件中 old 替换为new   :Sed s/old/new/g' 1.txt

                       ③在一行的内容前边添加内容  : sed '/pipei/ s/^/&word/g' 9.txt  #/pipei/会匹配特定的内容,然后进行匹配

           

 

 

           

           

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值