文本三剑客之sed

 

文本处理三剑客:
    grep,egrep,fgrep:文本过滤器
    sed:stream  editor,流编辑器,是一行一行处理的
    awk :文本格式化工具,报告生成器

 

  sed工作方式:它是读一行的文本内容复制到模式空间进行处理(不是在文本内处理的),符合sed模式的进行编辑,不符合的会标准输出来。
      sed 是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space ),接着用sed 命令处理缓冲区中的内容,处理完成后,把缓冲区内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed 主要用来自动编辑一个或多个文件, 简化对文件的反复操作, 编写转换程序等.
    sed也可以一次性执行多行文本内容。
     sed [OPTION]… ‘script’ [input-file]…    
     sed   选项(option)  地址命令
        

sed的选项
常用选项:
  -n :不输出模式空间中的内容至屏幕;
sed -n.PNG 

-e script,–expression=script : 多点编辑;
 

sed -e.PNG

  -f / PATH/TO/SCRIPT_FILE :  从指定文件中读取编辑脚本
  -r,–regexp-extended : 支持使用扩展正则表达式;

练习五.PNG 

 

-i[SUFFIX], –in-place[=SUFFIX] :直接编辑原文件;(这个命令很危险,使用时需注意,可以先备份要编辑的文件,再使用 -i )
    备份(sed -i.备份文件的后缀名 “地址命令” 文件名)
sed i 编辑备份.PNG

 

 

script:  ' 地址命令'
地址定界:
    1. 空地址:对全文进行处理;
    2,单地址:
             #:指定行;
            /pattern/:被此模式所匹配到的每一行;
    3,地址范围:
            #,#;第几行到第几行
            #,+#:第几行到从这行开始的以下几行
            #,/pattern/:第几行到能被模式所匹配的哪一行之间所有行,
            /pattern1/,/pattern2/ :
          / /为固定模式
     4,步进:~
           1-2:所有的奇数行
           2-2:所有的偶数行
 编辑命令
         d:删除;

sed -d.PNG       

 

         p:显示模式空间中的内容;

sed -p.PNG 

 

        a \text:在行后面追加文本“text”,支持使用\n实现多行追加

sed 行后加.PNG

         i \text:在行前面插入文本“text”,支持使用\n实现多行插入

sed 行前加.PNG

         sed –n‘s/root/&superman/p’ /etc/passwd  在单词后增加

 & 在单词后增加.PNG   

         sed –n‘s/root/superman&/p’ /etc/passwd  在单词前增加

在单词前增加.PNG

         c \text:把匹配到的行替为此除换指定的文本“text”

sed c.PNG

         w /PATH/TO/SOMEFILE:保存模式空间匹配到的行至指定的文件中;

sed w保存到某个文件.PNG

         r /PATH/FORM/SOMEFILE:读取指定文件的内容至当前文件被模式匹配到的行后面;文件合并;

sed r 读某个文件到这个文件.PNG

 

         =:  为模式空间中的行打印行号

sed =.PNG

          !: 模式空间中匹配行取反处理

sed !.PNG

          s///(search 搜索) :查找替换, 支持使用其它分隔符,s@@@ ,s###(用搜索到的字符串用后面的字符串代替它)
  替换标记:
          g:  行内全局替换(使用s///查找替换时 ,加上g :  s///g  时会把整行符合的字符串都替换,而不是只替换这一行搜索到的第一个符合的字符串)

sed 全局替换.PNG

          p:  显示替换成功的行

sed 转换打印.PNG

          w  /PATH/TO/SOMEFILE :将替换成功的 行 保存至文件中

sed 替换成功保存.PNG

sed 高级编辑命令:
    h:  把模式空间中的内容覆盖至保持空间中(1!G:如果不是第一行就执行把从保持空间

取出内容追加至模式空间,   $!d : 如果不是最后一行就执行删除模式空间中的行)

sed 高级 h.PNG

    H :把模式空间中的内容追加至保持空间中
    g:  从保持空间取出数据覆盖至模式空间

sed 高级 g.PNG

    G :从保持空间取出内容追加至模式空间

sed 高级 G 追加.PNG

    x:  把模式空间中的内容与保持空间中的内容进行互换
    n:  读取匹配到的行的下一行覆盖至模式空间

sed 高级 n.PNG

    N :追加匹配到的行的下一行至模式空间

sed 高级 N 追加.PNG

    d:  删除模式空间中的行

sed 高级 d.PNG

    D :删除 当前模式空间开端至\n 的内容(不在传至标准输出),放弃之后的命令,但是对剩余模式空间重新执行sed。

 

原创文章,作者:AN0519,如若转载,请注明出处:http://www.178linux.com/35211

(0)
AN0519AN0519
上一篇 2016-08-15
下一篇 2016-08-15

相关推荐

  • 循环语句for、while、until

    作用:    循环语句的作用是它可以让一段代码重复的执行,直到所需条件不满足为止。 在linux中变量的赋值方式有三种:       第一:直接等于号赋值       第二:通过read交互赋值       第三:for循环的赋值 bash脚本中的循…

    Linux干货 2016-08-22
  • 懒人本地YUM源设置

    一、挂载本地光盘到根目录下/media。 [root@wing-PC ~]# mount -v /dev/sr0 /media/ 二、用mv 修改/etc/yum.repos.d下面的文件。 [root@wing-PC ~]# mv -v /etc/yum.repos.d/CentOS-Base.repo / CentOS-Base.repo.bak [ro…

    系统运维 2017-08-05
  • 排名三剑客的VIM _正确的打开姿势!

    vim程序编辑器        vi:是老式的文字处理器。     vi的使用:【vi分为3种模式一般模式、编辑模式、命令模式】         一般模式:   vi打开文件就直接进入到了一…

    Linux干货 2017-04-10
  • MySQL慢日志监控脚本实例剖析

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://nolinux.blog.51cto.com/4824967/1577326        公司线上的 MySQL 慢日志,之前一直没有做好监控。趁着上周空闲,我就把监控脚本写了下,…

    Linux干货 2016-08-15
  • mysql数据库及表的管理

    MySQL中字符大小写: 1、SQL关键字及函数名不区分字符大小写; 2、数据库、表及视图名称的大小区分与否取决于低层OS及FS 3、存储过程、存储函数及事件调度器的名字不区分大小写,但触发器区分; 4、表别名区分大不写; 5、对字段中的数据,如果字段类型为Binary类型,则区分大小写;非Binary不区分大小写; 数据库: CREATE {DATABAS…

    Linux干货 2015-06-01
  • ansible-yaml初级语法(hosts、remote_user、tasks)

    环境准备:     1、主控节点IP:172.16.16.9     2、两个被控节点:1)172.16.16.48   2)172.16.16.50     3、hosts配置如下:       &…

    Linux干货 2016-11-28