美文网首页
(十)、sed的工作模式

(十)、sed的工作模式

作者: 雪燃归来 | 来源:发表于2021-01-19 00:18 被阅读0次

    一、基础介绍

    sed(Stream Editor),流编辑器对标准输出或文件逐行进行处理。

    二、语法格式

    第一种形式:

    stdout | sed [option] "pattern command"
    

    第二种形式

    sed [option] "pattern command" file
    

    三 、sed的处理过程

    sed的处理过程

    四、sed的选项

    选项 含义
    -n 只打印模式匹配行
    -e 直接在命令行进行sed编辑,默认选项
    -f 编辑动作保存在文件中,指定文件执行
    -r 支持扩展正则表达式
    -i 直接修改文件内容

    选项练习

    测试文案

    sed.txt

    I love python
    I love PYTHON
    Hadoop is bigdata frame
    

    1、非静默模式(同时输出匹配行和远行信息)

    sed 'p' sed.txt
    /*
    I love python
    I love python
    I love PYTHON
    I love PYTHON
    Hadoop is bigdata frame
    Hadoop is bigdata frame
    */
    

    2、-n 静默模式输出(只打印一遍,原行信息不打印,只打印匹配信息)

    sed -n 'p' sed.txt
    /*
    I love python
    I love PYTHON
    Hadoop is bigdata frame
    */
    
    sed -n '/python/p' sed.txt
    /*
    I love python
    */
    

    3、-e 同时按照多个条件进行编辑

    sed -n -e '/python/p' -e '/PYTHON/p' sed.txt
    /*
    I love python
    I love PYTHON
    */
    

    4、-f 引用外部的sed命令
    edit.sed

    /python/p
    
    sed -n -f edit.sed sed.txt
    /*
    I love python
    */
    

    5、-r 支持扩展运算符

    sed -n -r '/python|PYTHON/p' sed.txt 
    /*
    I love python
    I love PYTHON
    */
    

    6、-i 修改原文件内容

    sed -i 's/love/like/g' sed.txt
    cat sed.txt
    /*
    I like python
    I like PYTHON
    Hadoop is bigdata frame
    */
    

    五、sed中的详解pattern

    pattern用法表

    pattern 练习

    前置操作(每次操作后都要操作)

    cp /etc/passwd ./
    

    1、指定行号

    sed -n "17p" passwd
    // libstoragemgmt:x:998:995:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
    

    2、指定起始行号和结束行号

    sed -n "10, 12p" passwd
    /*
    operator:x:11:0:operator:/root:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    */
    

    3、指定起始行号,然后后面N行

    sed -n "10,+5p" passwd
    /*
    operator:x:11:0:operator:/root:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    nobody:x:99:99:Nobody:/:/sbin/nologin
    systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
    dbus:x:81:81:System message bus:/:/sbin/nologin
    */
    

    4、正则表达式匹配行

    sed -n "/^root/p" passwd
    /* root:x:0:0:root:/root:/bin/bash */
    // 打印未登录的行
    sed -n "/\/sbin\/nologin/p" passwd
    /* 结果略*/
    

    5、从匹配到pattern1的行,到匹配到pattern2的行

    sed -n "/^ftp/,/^mail/p" passwd
    /* 略 */
    

    6、指定行号开始,直到匹配到pattern1的行

    sed -n "4,/^hdfs/p" passwd
    /* 略 */
    

    7、从pattern1匹配的行开始,直到匹配到指定的位置

    sed -n "/root/, 10p" passwd
    /* 略 */
    

    sed中的编辑命令详解

    编辑命令(上)
    编辑命令下

    相关文章

      网友评论

          本文标题:(十)、sed的工作模式

          本文链接:https://www.haomeiwen.com/subject/sfazaktx.html