• Linux文本处理工具(sed)


    1.sed介绍

      stream editor,行编辑器

      sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕,然后读入下行,执行下一个循环。如果没有诸如‘D’的特殊命令,那会在两个循环之间清空模式空间,但不会清空保留空间。这样不断重复,直到文件末尾。文件内容并没有改变,除非使用重定向输出功能

      功能:主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等

    2.sed用法  

      用法:sed [option]... 'scripts' inputfile

      常用选项

        -n:不输出模式空间内容到屏幕上,即不自动打印

        -e:多点编辑

        -r:支持使用扩展正则表达式(默认使用基本正则表达式)

        -f:/PATH/SCRIPT_FILE:从指定文件中读取编辑脚本

        -i.bak:备份文件并原处编辑(先生成一个.bak的备份文件,然后再进行编辑)

      scripts

        '地址+命令'

      地址定界:

        (1):不给地址:对全文进行处理

        (2):单地址

          #:指定的行,$:最后一行

          /pattern/:被此处模式所能匹配到的每一行

        (3):地址范围

          #,#

          #,+#

          /par1/,pat2/:

          #,/pat1/

        (4):步进

          1~2:奇数行

          2~2:偶数行

      编辑命令

        d:删除模式空间匹配的行,并启用下一轮循环

        p:打印当前模式空间内容,追加到默认输出之后

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

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

        a[]text:在指定行后面追加文本

              支持使用 实现多行追加

        i[]text:在行前面插入文本

        c[]text:替换行为单行或多行文本

        w /path/somefile:保存模式匹配的行至指定文件

        r /path/somefile:读取指定文件的文本至模式空间中,放到匹配到的行后

        s///:查找替换,支持使用其它分隔符,s@@@,s###

          替换标记: 

            g:行内全局替换

            p:显示替换成功的行

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

    sed示例:

      取ip地址:ifconfig eno16777736|sed -r '2!d;s@.*inet (.*)net.*@1@'

      sed '2p' /etc/passwd

      sed -n '2p' /etc/passwd

      sed -n '1,4p' /etc/passwd

      sed -n '/root/p' /etc/passwd

      sed -n '2,/root/p' /etc/passwd

      sed -n '/^$/=' file 

      sed -n -e '/^$/p' -e '/^$/=' file

      sed '/root/asuperman' /etc/passwd

      sed '/root/isuperman' /etc/passwd

      sed '/root/csuperman' /etc/passwd

      sed '/^$/d' file

      sed '1,10d' file

      nl /etc/passwd|sed '2,5d'

      nl /etc/passwd|sed '2a ea'

      sed 's/test/mytest/g' sed.txt

      sed -n 's/root/&superman/p' /etc/passwd

      sed -n 's/root/superman&/p' /etc/passwd

      sed -i.bak 's/test/mytest/g' sed.txt

    3.sed高级用法

  • 相关阅读:
    jquery动态生成button的点击事件
    datatable 相关属性翻译
    python程序出现403错误
    相同布局的div层叠,冲突问题解决
    js进阶
    css进阶
    pycharm快捷键及常用设置
    arcgis软件安装相关问题
    将input type="file" 类型的图片文件转成base64
    SpringMVC中的参数绑定总结
  • 原文地址:https://www.cnblogs.com/hjmLinux/p/11867586.html
Copyright © 2020-2023  润新知