zoukankan      html  css  js  c++  java
  • 【OS_Linux】三大文本处理工具之sed命令

    1、sed命令的简介及用法

    sed:即为流编辑器,“stream editor”的缩写。他先将源文件读取到临时缓存区(也叫模式空间)中,再对满足匹配条件的各行执行sed命令。sed命令只针对缓存区中的副本进行,不会修改或破坏源文件。默认情况下,屏幕上既会打印各行的原始内容又会打印处理后的结果。

    如图 1: sed 处理过程

     

    sed语法:sed [选项]  匹配条件及编辑命令 输入文本(文件)

    选项:

       -n∶使用安静(silent)模式,只打印被sed命令处理过的结果行,不打印未被sed命令处理的行。
            -e∶对模式空间中的各行执行多重编辑,编辑命令的顺序将影响结果。
            -f∶用一个sed脚本对输入进行编辑, -f filename指定sed脚本的文件名。
            -r∶编辑条件中使用扩展的正则表达式
            -i∶直接修改源文件,而不在屏幕上输出     

    匹配条件:

    1、采用正则表达式进行匹配(包括字符匹配、次数匹配、位置匹配)

    2、行号匹配 (行号从1开始)

           beginNumber~step:从行号为beginNumber开始,每隔step步长处理一次。例如: sed -n 2~5p 含义:从第二行开始匹配,隔 5 行匹配一次,即 2,7,12.......。

         beginNumber, +N:从 beginNumber这行到往下 N 行匹配,总共匹配 N+1 行。

         beginNumber,  ~N:从addr1行开始,直到行号为N的整数倍时结束。

         beginNumber, endNumber:行号为beginNumber到endNumber之间的行。

    编辑命令:

    命 令 说 明
    i 在当前行之前插入一行
    a 在当前行之后追加一行
    c 用新文本覆盖(cover)当前行
    d 删除匹配的行
    g 默认只修改各行中首次匹配成功的位置,该参数意为整行搜索和替换
    p 打印匹配的行
    q 结束或退出 sed命令
    反向匹配,即对未匹配成功的行执行sed命令
    s 用一个字符串替换另一个字符串

    案例:

    输入文件为ceshi.txt

    选项-n的作用:

    默认情况下会将未被sed命令处理的行也打印出来

    有了选项-n后只打印经sed命令处理的行

     删除命令d:删除从第三行到最后一行内容

    修改命令s:在以两位数字结尾的行后面追加.5,符号“&”表示取匹配模式。

     行追加命令a:

     多个sed命令组成的通道:前一个sed命令的输出作为下一个sed命令的输入

    amosli@amosli-pc:~/learn/sed$ cat test.txt 
    hi,this is sed command test file
    linux world is so amazing
    
    you will LOVE it!
    amosli@amosli-pc:~/learn/sed$ cat test.txt | sed 's/linux/LINUX/' | sed 's/sed/SED/'
    hi,this is SED command test file
    LINUX world is so amazing
    
    you will LOVE it!

    2、用sed命令直接编辑源文件

    法一:通过选项-i直接编辑源文件,而不是在屏幕上输出

     法二:先将sed处理的结果重定向到另外一个零时文件,再覆盖源文件

     本博文参考了:linux命令总结sed命令详解  linux shell 脚本攻略学习19--sed命令详解

  • 相关阅读:
    Codeforces 919D:Substring(拓扑排序+DP)
    初学Javascript,写一个简易的登陆框
    学习数据结构之线性表
    用python实现的简易记牌器的demo
    Multiism四阶巴特沃兹低通滤波器的仿真实现
    用python来抓取“煎蛋网”上面的美女图片,尺度很大哦!哈哈
    用Python爬虫爬取“女神吧”上的照片。
    在linux操作系统上进行简单的C语言源码的gcc编译实验
    想学习linux操作系统,于是选择了在win8 虚拟机VM player 里装了Linux版本Centos7
    通过python的urllib.request库来爬取一只猫
  • 原文地址:https://www.cnblogs.com/leiblog/p/10708088.html
Copyright © 2011-2022 走看看