首页 > 代码库 > 文本编辑命令——sed

文本编辑命令——sed

  sed命令作为一种流编辑器,以行为单位对一个或多个文件进行编辑,在sed处理文本时,会将文本放到一个模式空间当中,如果当前行能够匹配sed命令所给出的PATTERN则用命令进行处理,如果不能匹配则默认情况下标准输出;文件内容默认情况下不会改变;

  sed命令:

  sed [OPTION]...‘script’  [input-file]...

  常用选项:

  -n:安静模式,默认不匹配的行不输出到屏幕上;

  -e script:多条件输出,一个e选项可以配合一个script;

  -i:将修改的内容直接写进原文件;

  -r:支持扩展的正则表达式;

  

  script由两部分组成:Address与Command两者之间不能有空格存在;即AddressCommand;

  Address:

  1.当地值为空时则表示对当前所有文件进行操作;

  2.单地址,指定行号num时,只对当前行进行操作,或者/PATTERN/指能够匹配该模式的第一行,对该行进行操作;

  3.地址范围:

  ①addr1,addr2:从addr1开始到addr2结束的中间所有行,包括addr1和addr2;

  ②first~step:由标记first开始到step为止;

  ③add1,+N:由add1行开始,并计算向后N行;

  ④addr1,~N:从addr1开始,包括addr1所在行,向后计算addr1*N行;

  例如:2,~5相当于2,2*5

  ⑤/PATTERN1/,/PATTERN2/

  从被pattern1匹配的第一行开始计算,一直到被pattern2匹配的第一行结束;


  Command:

  =:先是被模式匹配行的行号;

  a \test:在所匹配行的下一行添加test文本,支持使用\n选项;

  i \test:在所匹配行的上一行添加test文本,支持使用\n选项;

  c \test:将所匹配行用test进行替换,支持使用\n选项;

  d:将在模式空间中匹配的行删除,不在显示输出,d选项通常不搭配-n选项;

  p:将在模式空间匹配的行输出,p选项通常搭配-n选项;

  w filepath:被能够匹配的行另存到一个文件里去;

  r filepath:将filepath中的内容追加到模式空间中被模式匹配的行之后;

  !COMMAND:在模式空间中匹配的行不输出,不匹配的行输出;

  s///:查找替换,“/”可以随意分配三个一模一样的符号,视情况而定;

  s/pattern/text/[control]

  pattern:计划查找并替换内容;

  text:要替换的结果

  control:如何进行替换;

  g:行内全部替换;

  p:显示替换成功的行;

  如

  s@/etc/fstab@/etc/mtab@:将字符/etc/fstab替换为/etc/mtab;

  

  sed命令示范:

  加-n与不加-n:采用指定单地址的方式

  技术分享

  -e:

  技术分享

  -r:取出当前路径的基名,用基民替换当前路径

  技术分享

  -i:将修改写入文件;

  技术分享

  采用多地址方式:add1,add2

  技术分享

  add1,+N

  技术分享

  /PATTERN/,/PATTERN/匹配:

  技术分享

  p:将在模式空间匹配的行输出;加-n与不加-n;

  技术分享

  d:删除模式空间匹配的行;d选项的使用不加-n;

  技术分享

  w file:将模式匹配的内容保存到另一个文件当中;

  技术分享

  s///:查找替换,将文件中开头为#且后面有空格的匹配字符删去;

  技术分享


文本编辑命令——sed