zoukankan      html  css  js  c++  java
  • 文本处理三剑客之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

  • 相关阅读:
    115. Distinct Subsequences
    91. Decode Ways
    72. Edit Distance
    python 输出 a+b
    求次小生成树
    判断最小生成树是否唯一
    二分法求最优值
    黑科技
    线段树+ 区间更新
    2018ICPC青岛赛区J题
  • 原文地址:https://www.cnblogs.com/L-dongf/p/8807864.html
Copyright © 2011-2022 走看看