• linux三剑客-sed命令使用方法


    一 . 三剑客命令sed概念说明

      官方概念说明:stream editor for filtering and transforming text(字符流过滤编辑和文本字符流转换工具)

      通俗概念说明:字符流编辑工具(行编辑工具)==按照每行默认处理每一行的字符信息(按照每行中的字符进行处理操作)

      相比较而言vim是全屏编辑工具

    二 . 三剑客命令sed作用说明

      1.处理文件信息

        文本文件信息(小文件)

        日志文件信息(grep awk)

        配置文件信息(sed)

      2.处理文件方式

        01.增加信息(增)

        02.删除信息(删)

        03.修改信息(改)

        04.查看信息(查)

    三 . 三剑客命令sed语法原理

      1.命令语法格式

        sed   [OPTION]...   {script-only-if-no-other-script}   [input-file]...
        命令  参数      sed指令(条件+处理)      处理文件信息

        sed  -n        '/oldboy/p'          oldboy.txt

        对于sed指令来说,一般是由条件和处理指令构成

      2.命令执行过程

        

          

         

          利用上述命令来对sed命令的执行过程进行文字描述:

          假如我们以查找oldboy为例来说,首先sed会将第一行信息放到模式空间(内存空间),然后判断第一行是否满足条件.即是否有oldboy字符信息,此时经判断满足条件,执行sed命令p处理,打印满足条件的一行(第一行),此时判断sed是否有-n参数若没有默认输出存在于模式空间的第一行,若有-n参数则不输出到屏幕,继续读取下一行,将下一行放到模式空间,判断是否满足条件,不满足则判断是否有-n参数.没有-n参数则默认输出到屏幕上,有-n则不输出.依次类推,直到匹配到最后一行.执行完成

          没有-n参数,对放到模式空间中的行默认都会输出.因为sed是按每行进行操作.所以没行都会显示

    四 . 三剑客命令sed实践操作

      1.查询实践

        

        01.按照文件内容的信息查询

          001.按照内容信息,输出单行内容

          

          002.按照内容信息,输出多行内容(连续多行内容)

          

          003.按照内容信息,输出多行内容(不连续多行内容) 

          

        02.按照文件内容的行号查询

          001.根据行号信息,显示单行内容

          

          002.根据行号信息.显示多行内容(连续)

          

          003.根据行号信息,先睡多行内容(不连续)

          

      2.增加实践

        01.按照行号增加

          001.在第n行行前添加信息

          

           练习:在文件第一行添加信息100,oldgirl,CEO

          

          002.在第n行行后添加信息

          

           练习:在文件最后一行 添加信息106,olddog,UFO

          

        02.按照信息增加

          1.在查找到的内容行行前行后添加信息:在有oldboy内容的行前面添加oldgirl 后面添加 olddog信息

          

           2.文件中添加多行信息: sed 'na/i xxxx xxxx xxxx'

          

           企业典型应用:编写配置文件

          sed '$aIPaddress=10.10.10.1 mask=255.255.255.0 gateway=10.10.10.254' 文件名称

      3.删除实践

        01.删除单行信息

        

        02.删除多行信息(连续)

        

        03.删除多行信息(不连续)

        

        04.删除有oldboy信息的行

        

        05.利用sed命令取消空行显示

          1.删除有空行的行      -i参数使改动永久保存在文件中

          

           2.将空行打印出在利用!取反

          

      4.替换实践

        1.文本替换:  sed 's/原有内容/修改后内容/g' person.txt

          

        2.后项引用前项  sed -r 's/()/ /g'  person.txt

          利用sed 命令取出ip地址

          

           练习sed中前项引用后项的用法 .找出10.0.0.255

          

           将上述命令做整个精简

          ip a s eth0|sed -n '3p'|sed -r  's/^.*net (.*)/1/g'|sed -r 's#(.*)/24.*#1#g'

           ip a s eth0|sed -n '3p'|sed -r 's#^.*net (.*)/24.*#1#g'

          ip a s eth0|sed -nr '3s#^.*net (.*)/24.*#1#gp'
           

        3.修改文件内容直接进行自动备份

          利用 -i 参数加后缀名.自动创建备份文件

          

           练习:后缀名自定义

          

        4.在真实替换文件内容的时候,一定不能让 n 和 i 参数同时出现 

           

           说明, n 和 i 同时出现会将文件内容覆盖.覆盖的内容是-n所显示的全部内容

        5.企业应用案列

          1.批量修改文件名称  sed命令替换执行

            

          2.批量修改文件名称  rename

               rename    .txt                                 .jpg                       oldboy*.txt
                命令      文件名称需要修改的部分信息    修改成什么信息      将什么样的文件进行修改

            

      5.扩展实践

        01. 修饰指定信息取反     sed -n '/^$/!p' person.txt    显示出除空行以外的所有行
        02.取出文件行号信息      sed '=' person.txt       
        03.执行多个相同指令      sed -n '1p;3p;5p' person.txt

    五 . 三剑客命令sed课程总结

      1.命令参数说明

        -n    取消默认输出

        -r    识别扩展正则

        -i    真实编辑文件(将内存中的信息覆盖到磁盘中)

        -e    识别sed命令的多个指令    

      2.命令的指令信息

        01.增

          i(insert)    行前插入信息

          a(append)   行后插入信息

        02.删

          d(delete)    删除信息

        03.改

          s(subsitute)   替换信息     s///g(global全局)

          c        替换指定信息的一整行信息   sed '2coldboyedu-sz-01' person.txt

        04.查

          p(print)    显示输出信息

      3.命令的显示信息

        利用行号表示条件

          sed -n '4p'  oldboy.txt      显示单行信息

          sed -n '1,4p'  oldboy.txt      显示连续多行信息
          sed -n '1p;4p'  oldboy.txt      显示不连续多行信息

        利用信息表示条件

          sed -n '/oldboy/p'  oldboy.txt    显示单行信息
          sed -n '/oldboy/,/oldgirl/p'  oldboy.txt  显示连续多行信息
          sed -n '/oldboy/p;/oldgirl/p'  oldboy.txt   显示不连续多行信息

  • 相关阅读:
    【题解】CF#983 E-NN country
    【题解】CF#403 D-Beautiful Pairs of Numbers
    【题解】CF#285 E-Positions in Permutations
    【题解】FJOI2015火星商店问题
    【题解】Atcoder AGC#01 E-BBQ Hard
    【题解】Atcoder AGC#03 E-Sequential operations on Sequence
    【题解】CF#280 C-Game on Tree
    【题解】CF#833 B-The Bakery
    [BZOJ3600] 没有人的算术 [重量平衡树+权值线段树]
    [bzoj3514][CodeChef GERALD07] Chef ans Graph Queries [LCT+主席树]
  • 原文地址:https://www.cnblogs.com/zp751060301/p/12880006.html
Copyright © 2020-2023  润新知