语法

    1. sed [参数] '条件 指令(如何处理)' 文件信息
    2. sed -n '/oldboy/p' oldboy.txt

    参数:
    -n : 使用安静模式,在一般情况所有的 STDIN 都会输出到屏幕上,加入-n 后只打印被 sed 特殊处理的行
    -i : 直接修改文档读取的内容,不在屏幕上输出
    -e : 多重编辑,且命令顺序会影响结果
    条件 指令

    条件:要处理的行
    1、 first~step:sed -n 2~5p 含义:从第二行开始匹配,隔 5 行匹配一次,即 2,7,12…….。
    2、$: 最后一行 sed -n ‘$P’ person.txt 含义:打印persion.txt的最后一行
    3、/REGEXP/:正则匹配的内容 sed -n ‘/oldboy/P’ person.txt 含义:打印含有oldboy的行
    4、addr1,add2:sed -n ‘1,3P’ person.txt 含义:打印第一行到第三行
    5、addr1, +N: sed -n ‘1,+2P’ person.txt 含义:从第一行打印,打印到加2行的数据
    6、addr1, ~N:sed -n ‘1,~3P’ person.txt 含义:打印第一行到第三行
    指令:要执行的命令
    p:打印;命令 p 是打印命令,用于显示模式缓存区的内容。默认情况下, sed 把输入行打印在屏幕上,选项-n 用于取消默认打印操纵。当选项-n 和命令 p 同时出现时, sed 可打印选定的内容
    d:删除某行

    创建一个文件,内容如下

    1. 101,oldboy,CEO
    2. 102,zhaoyao,CTO
    3. 103,Alex,COO
    4. 104,yy,CFO
    5. 105,feixue,CIO
    6. 3p
    1. # 查看第三行数据
    2. sed -n '3p' person.txt
    3. # 将有oldboy的行进行显示
    4. sed -n '/oldboy/p' person.txt
    5. # 从第二行开始匹配,隔 5 行匹配一次,即 2,7,12.......。
    6. sed -n 2~5p
    7. # 打印第一行到第三行
    8. sed -n '1,3P' person.txt
    9. # 从第一行打印,打印到加2行的数据
    10. sed -n '1,+2P' person.txt
    11. # 打印第三行、第五行
    12. sed -n '3p;5p' person.txt
    13. # 将oldboy ~ alex信息进行显示:
    14. sed -n '/oldboy/,/Alex/p' person.txt
    15. 只查看有oldboyalex信息:
    16. sed -n '/oldboy/p;/Alex/p' person.txt
    1. # 显示删除第三行之后的数据
    2. sed '3d' person.txt
    3. -----------------------------
    4. # 返回
    5. 101,oldboy,CEO
    6. 102,zhaoyao,CTO
    7. 104,yy,CFO
    8. 105,feixue,CIO
    9. 3p
    10. 真正删除第三行,页面不展示返回值,参考下图
    11. sed -i '3d' person.txt

    image.png
    加 -i 与不加 -i 的区别:
    加-i:表示是真的对硬盘中文件进行了编辑,所以会真正的删除。
    不加-i:表示是对内存中的信息进行了编辑,所以不会真正的删除硬盘中的信息。

    1. # 查看一段时间内的日志
    2. sed -n '/2021-01-15 11:19:*/,/2021-01-15 11:22:*/p' sys.log

    image.png

    参考1:https://www.cnblogs.com/ginvip/p/6376049.html
    参考2:https://www.cnblogs.com/basa/p/11136225.html