zoukankan      html  css  js  c++  java
  • sed 命令编辑文本

    1.sed 概述

      sed 是一个非交互式文本编辑器。它能够对文本文件和标准输入进行编辑,标准输入能够是来自键盘输入、文件重定向、字符串、变量。甚至来自于管道文本。

    2.sed工作流程简述

      sed在处理文件的时候。从一个文本行或标准输入读取数据。被保存到在一个叫模式空间的暂时缓冲区中。除非被删除或者输出被取消,否则全部被处理的行在运行完sed命令后都将打印在屏幕上。接着模式空间被清空,并存入新的一行等待处理。

    3.sed的缓冲区

      模式缓冲区:模式空间的缓冲区。被sed命令处理。

      保持缓冲区:与模式缓冲区数交换或者暂存,默认值为空行

      模式缓冲区与保持缓冲区的之间的命令有两类:替换和追加(替换命令为小写字母。追加命令为大写字母)

        替换:模式缓冲区 -> 保持缓冲区  h (将模式缓冲区的内容拷贝到保持缓冲区,替换保持缓冲的内容)

                    保持缓冲区 -> 模式缓冲区  g

        追加: 模式缓冲区 -> 保持缓冲区 H(将模式缓冲区的内容追加到保持缓冲区)

                     保持缓冲区 -> 模式缓冲区 G 

    4.sed调用方式和选项

    • sed [选项] 'sed 命令' 输入文件  (命令行调用sed)
    • sed [选项] 'sed 命令'  -f sed脚本文件 输入文件  (sed命令插入脚本文件后。然后通过sed命令调用它)
    • 无论哪种调用方式,假设没有指定输入文件,sed将从标准输入中接受输入。
    选项 意义
    -n 禁止自己主动打印模式缓冲区
    -e 表示将下一个字符串解析为sed编辑命令
    -f 表示正在调用sed脚本文件


    5.sed命令

       sed命令通常由两部分组成:定位文本行和sed编辑命令。

       1)定位文本行:使用行号,指定一行或指定行号范围。使用正表达式。

    选项 意义
    x x为指定行号
    x,y 指定从x到y的行号范围
    /pattern/ 查询包括模式的行
    /pattern/pattern/ 查询包括两个模式的行
    /pattern/,x 从与pattern的匹配行到x号行之间的行
    x,/pattern/ 从x号行到与pattern的匹配行之间的行
    x,y! 查询不包含x到y行号的行
     

               sed元字符集:

    ^

    锚定行的開始 如:/^sed/匹配全部以sed开头的行。

    $

    锚定行的结束 如:/sed$/匹配全部以sed结尾的行。

    .

    匹配一个非换行符的字符 如:/s.d/匹配s后接一个随意字符,然后是d。

    *

    匹配零或多个字符 如:/*sed/匹配全部模板是一个或多个空格后紧跟sed的行。

    []

    匹配一个指定范围内的字符,如/[Ss]ed/匹配sed和Sed。

    [^]

    匹配一个不在指定范围内的字符。如:/[^A-RT-Z]ed/匹配不包括A-R和T-Z的一个字母开头,紧跟ed的行。

    (..)

    保存匹配的字符。如s/(love)able/1rs,loveable被替换成lovers。

    &

    保存搜索字符用来替换其它字符,如s/love/**&**/,love这成**love**。

    <

    锚定单词的開始,如:/<love/匹配包括以love开头的单词的行。

    >

    锚定单词的结束,如/love>/匹配包括以love结尾的单词的行。

    x{m}

    反复字符x。m次。如:/0{5}/匹配包括5个o的行。

    x{m,}

    反复字符x,至少m次,如:/o{5,}/匹配至少有5个o的行。

    x{m,n}

    反复字符x,至少m次,不多于n次,如:/o{5,10}/匹配5--10个o的行

      2)sed编辑命令
    sed编辑命令表
    选项 意义
    p 打印匹配行
    = 打印文件行号
    a 在定位行号之后追加文本信息
    i 在定位行号之前插入文本信息
    d 删除定位行
    c 用新文本替换定位文本(行)
    s 使用替换模式替换对应模式
    r 从还有一个文件里读取文本
    w 将文本写入到一个文件
    y 变换字符(以单个字符替换相应的字符)
    q 第一个模式匹配完毕后退出
    {} 在定位行运行命令组与 -e选项功能相近
    n 输出模式缓冲区行,读取下一行替换模式缓冲区行,运行下一条命令。并不是第一条命令
    h 模式缓冲区的文本拷贝到保持缓冲区
    H 模式缓冲区的文本追加到保持缓冲区
    g 保持缓冲区的文本拷贝到模式缓冲区
    G 保持缓冲区的文本追加到模式缓冲区
    x 互换模式缓冲区和保持缓冲区的内容


  • 相关阅读:
    pygame中的图像和音乐
    pygame中鼠标画直线
    Python-GUI:button及entry的应用
    Linux查看物理CPU个数、核数、逻辑CPU个数
    阿里云nas使用记录
    字符集错误解决
    firewalld防火墙命令规则设置
    Linux之TCPIP内核参数
    nginx 301跳转https后post请求失效问题解决
    TCP queue 的一些问题
  • 原文地址:https://www.cnblogs.com/clnchanpin/p/7297443.html
Copyright © 2011-2022 走看看