Linux三剑客——sed

Posted

tags:

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

1.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     小尾巴/修饰

1.2 sed命令功能示例

1. 等号’=‘显示行号

        # sed = person.txt

2. 单行-输入行号即可

        # sed -n '3p' person.txt

        103,Alex,COO

3. 显示多行

        # sed -n '3,6p' person.txt

4. 包含oldboy的行

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

        101,oldboy,CEO

5. 显示包含oldboy到显示yy的行

        # sed -n '/oldboy/,/yy/p' person.txt

        101,oldboy,CEO

        102,zhangyao,CTO

        103,Alex,COO

        104,yy,CFO

6. 显示包含oldboyyy的行

        # sed -nr '/oldboy|yy/p' person.txt

7. 显示不连续的行

        # sed -nr '1p;3p;4p' person.txt

8. 文件的最后一行增加两行

        # 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

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

        # sed  '/^$/d' person.txt

        # sed -n '/^$/!p' person.txt

        # awk '!/^$/' person.txt

        # grep -v '^$' person.txt

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

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

        dou01,oldboy,CEO

        -i 表示确定修改

        -i.bak 表示先备份再修改

        sed中双引号内变量可以执行

11. 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>

1.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

                替换的内容        替换成什么              替换哪些文件

1.4 使用sed命令常见的坑

1. -r-i同时使用:

      -r参数在前面:-ri    正常结果

      -i参数在前面:-ir    表示先把文件备份xxr,然后再替换文件中的内容

2.  -r-n同时使用:会把源文件的内容清空,只显示符合条件内容

1.5 sed命令总结图

技术分享图片


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

Linux三剑客——sed命令简述

linux文本三剑客之sed命令详解

Linux三剑客——sed

linux三剑客之sed入门详解

Linux三剑客-sed批量编辑文本

linux三剑客-sed