文本处理三剑客之sed

sed

1、简介

sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(patternspace),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。然后读入下行,执行下一个循环。如果没有使诸如‘D’的特殊命令,那会在两个循环之间清空模式空间,但不会清空保留空间。这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。 主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等。

2、用法

sed [OPTION]... {script-only-if-no-other-script} [input-file]...

3、选项

  • -n:不输出模式空间的内容到屏幕
  • -f SCRIPT_FILE:读取文件中的sed脚本来处理文本
  • -r:使用扩展的正则表达式
  • -i:直接修改原文件,-i,bak 可以先备份原文件
  • -e:sed -n -e 'script1' -e 'script2' 多点编辑,可以多个脚本一块处理文本

4、sed脚本

地址定界

  • 不指定地址默认为对全文处理
  • n:指定第n行
  • /PATTERN/:被PATTERN匹配到的每一行
  • m,n:从m到n行
  • m,+n:从m行开始往后n行
  • /PAT1/,/PAT2/:从被PAT1匹配到的行开始到被PAT2匹配到的行
  • n,/PAT/:从指定n行开始到被匹配到的行
  • ~:步进,比如1~2,从第一行开始每次跳2行,则表示奇数行

编辑命令

一.常用编辑命令

  • d:删除
  • p:打印
  • a []文本:将文本追加到指定行的下一新行
  • i []文本:将文本追加到指定行的上一新行
  • c []文本:将匹配到的字符串修改为文本字符串
  • w newfile:将匹配到的行另存为新文件
  • r oldfile:将文件中的内容读入模式空间并追加至被匹配到行的行后
  • =:显示行号
  • !:地址定界取反
  • s:查找替换s/待修改文本/修改文本/修饰符,分隔符也可用@、,、#等
    • g:全行替换
    • p:将修改后的文本打印到屏幕
    • w newfile:将替换成功的行另存为至新文件

 二.高级编辑命令

  • P:打印模式空间中开端到换行
  • h:把模式空间中的内容覆盖到保存空间
  • H:把模式空间中的内容追加到保存空间
  • g:从保持空间取出数据覆盖至模式空间
  • G:从保持空间取出数据追加至模式空间
  • x:把模式空间中的数据和保持空间的数据互换
  • n:读取匹配到的行的下一行覆盖至模式空间
  • N:读取匹配到的行的下一行追加至模式空间
  • D:从模式空间的开始删除到换行的地方

 记录于2018.4.12 15:08

原文地址:https://www.cnblogs.com/L-dongf/p/8807864.html