一、概述

    1、  sed 全称为Stream Editor,就是行编辑器,意味着一次只处理一行文本,sed将被匹配到            的行放到自己特定的空间(通常称为模式空间)中进行编辑;然后再根据结果进行输出显示;

    2、  sed中还有一段空间称为保持空间,sed模式空间中的内容可以与保持空间的内容可以进            行自由互换,实际工作中用处很少,仅作参考;

Sed工作流程如图

sed使用方法_编辑器

二、sed命令使用

   sed [OPTION]... 'script' [input-file]..

             常用选项:

         -n:匹配到的行的内容至屏幕;

         -e script, --expression=script:多点编辑;

         -f /PATH/TO/SED_SCRIPT_FILE:支持使用脚本;

            

         -r, --regexp-extended:支持使用扩展正则表达式;

         -i[SUFFIX], --in-place[=SUFFIX]:直接编辑原文件,慎用;

  地址定界:

关于地址定界:

可以帮助sed去定义处理哪些行,如果不加参数则处理所有的行;

         (1) 空地址:对全文进行处理;

         (2) 单地址:

               #:指定行;

               /pattern/: 被此模式所匹配到的每一行;

         (3) 地址范围:

               ##

               #+#

               #/pattern1/

               /pat1/,/pat2/

               $: 最后一行;

         (4) 步进地址:~

                   1~2:所有奇数行

                     2~2:所有偶数行

  d:删除

sed使用方法_编辑器_02

       p: 显示模式间中的内容;显示奇数行空

sed使用方法_空间_03

a \text :在行后面追加文本“text”,支持使用\n实现多行追加;


sed使用方法_编辑器_04

i \text :在行前面插入文本“text”,支持使用\n实现多行插入;与a \text使用方法相同,只是会在指定行的前面加入新行

c\text: 把匹配到的行替换为此处指定的文本“text"

sed使用方法_空间_05

w /PATH/TO/SOMEFILE: 保存模式空间匹配到的行至指定的文件中;

sed使用方法_编辑器_06

r/PATH/FROM/SOMEFILE: 读取指定文件的内容至当前文件被模式匹配到的行后面;文件合并;

sed使用方法_编辑器_07

  = 为模式匹配到的行打印行号;

sed使用方法_空间_08


 !:条件取反;

 例: ~]# sed '1!d' /etc/passwd

root:x:0:0:root:/root:/bin/bash

  s///: 查找替换,其分隔符可自行指定,常用的有s@@@,s###等;

           替换标记:

               g: 全局替换;

               w /PATH/TO/SOMEFILE: 将替换成功的结果保存至指定文件中;

               p: 显示替换成功的行;


替换查找命令在下面做两个示例:

将文件中#号替换为无:

sed使用方法_空间_09

#包括#后面的空白字符替换为无

sed使用方法_编辑器_10