Linux三剑客——sed命令简述

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux三剑客——sed命令简述相关的知识,希望对你有一定的参考价值。

Linux三剑客——sed
13.1 sed介绍

  1. sed——流编辑器(stream editor)
  2. sed功能与版本:处理文本文件,日志,配置文件
    增加、删除、修改、查询
    sed --version
  3. 语法格式:sed [选项] [sed指令] [输入文件]
    sed -i.bak ‘s#boy#girl#g‘ oldboy.txt
    -i sed命令的参数
    s sed命令
    g 小尾巴/修饰
  4. sed命令执行过程
    13.2 sed命令功能示例
  5. 等号’=‘显示行号
    sed = person.txt
  6. 单行-输入行号即可
    sed -n ‘3p‘ person.txt

    103,Alex,COO

  7. 显示多行
    sed -n ‘3,6p‘ person.txt
  8. 包含oldboy的行
    sed -n ‘/oldboy/p‘ person.txt

    101,oldboy,CEO

  9. 显示包含oldboy到显示yy的行
    sed -n ‘/oldboy/,/yy/p‘ person.txt

    101,oldboy,CEO
    102,zhangyao,CTO
    103,Alex,COO
    104,yy,CFO

  10. 显示包含oldboy或yy的行
    sed -nr ‘/oldboy|yy/p‘ person.txt
  11. 显示不连续的行
    sed -nr ‘1p;3p;4p‘ person.txt
  12. 文件的最后一行增加两行
    sed ‘$a106,wuxingge,UFO\n107,lee,XO‘ person.txt

    #a==append 追加
    #i==insert 插入

    echo -e ‘106,wuxingge,UFO\n107,lee,XO‘>>person.txt
    cat >>person.txt <<EOF

    106,wuxingge,UFO
    107,lee,XO
    EOF

  13. 不显示空行方法 !表示取反

    sed ‘/^$/d‘ person.txt

    sed -n ‘/^$/!p‘ person.txt

    awk ‘!/^$/‘ person.txt

    grep -v ‘^$‘ person.txt

  14. ‘s###’表示逐行替换符合条件的第一个对象

    sed ‘s#1#dou#‘ person.txt

    dou01,oldboy,CEO
    -i 表示确定修改
    -i.bak 表示先备份再修改
    sed中双引号内变量可以执行

  15. sed命令中&符号表示前面正则匹配到的内容

    echo ‘123456‘|sed ‘s#.*#<&>#g‘

    <123456>

    echo ‘123456‘|sed -r ‘s#([0-9])#<\1>#g‘

    <1><2><3><4><5><6>

    echo ‘123456‘|sed ‘s#.#<&>#g‘

    <1><2><3><4><5><6>
    13.3 批量修改文件名
    方法1-使用sed替换

    ls .jpg|sed -r ‘s#(.)jpg#mv & \1avi#g‘

    mv oldboy01.jpg oldboy01.avi
    mv oldboy02.jpg oldboy02.avi

    ls .jpg|sed -r ‘s#(.)jpg#mv & \1avi#g‘|bash

    方法2-使用rename方法批量修改文件名

    rename jpg avi old*.jpg

    rename from to file
    替换的内容 替换成什么 替换哪些文件
    13.4 使用sed命令常见的坑

  16. -r与-i同时使用:
    -r参数在前面:-ri 正常结果
    -i参数在前面:-ir 表示先把文件备份xxr,然后再替换文件中的内容
  17. -r与-n同时使用:会把源文件的内容清空,只显示符合条件内容
    技术分享图片

以上是关于Linux三剑客——sed命令简述的主要内容,如果未能解决你的问题,请参考以下文章

Linux三剑客 sed

Linux三剑客 sed

linux12shell编程 --> 三剑客之sed命令

Linux文本三剑客--grepsedawk

Linux常用基本命令:三剑客命令之-sed

Linux运维文本处理三剑客之sed命令