• linux三剑客之sed


    ---恢复内容开始---

        早就知道Linux有三剑客awk,sed,grep.

        今天就来说下sed,简单来说,这个命令简单来说就是用来按行处理文件的。

        首先,我们从问题入手,文件一般都需要什么操作呢?

        答:增删改查,和数据库操作差不多,但是对于数据库来说,每个元组都有对应的主键,但是文件没有,如果一定要确定某一行的内容的话,恐怕只能依赖于行号了。

        所以今天的问题就按照增删改查来进行扩展:

        一、首先说增:

        增的话有几种呢?

        1. 指定文件某一行行号插入一行内容

    sed '2i helloworld' test.txt

    注:该命令的意思是读取test.txt文件在第二行前面加上helloworld。2i就是插入第二行。

        2.指定文件某一行行号后面加一行内容

    sed '2a helloworld' test.txt

    注:该命令的意思是读取test.txt文件在第二行后面也就是第三行加上helloworld。2a就是追加到第二行后面。

        3.在文件最后追加一行内容

    sed '$a helloworld' test.txt

    注:这里$代表最后一行的意思,在最后一行加入helloworld。

        4.可能又一个思考,就是我们前面都只是加一行内容,但如果要是加入多行的内容呢?

        二、下面该说删了:

        1. 删除指定行号的内容

    sed '2d' test.txt

    注:删除第二行的内容

        2. 删除指定行号间的内容(前闭后闭)

    sed '2,4d' test.txt

    注:删除第二行到第四行的内容。

        三、接下来是改:

        1. 修改指定开头的内容

    sed 's/^r/a/' test.txt

    注:将所有r打头的都改为a打头的

        2. 全局修改某个字符串为XX

    sed 's/r/a/g' test.txt

        3. 修改指定行号的内容

    sed '2c helloworld' test.txt

        、接下来是查

        1. 查找某一个字符串出现的行

    sed -n '/games/p' test.txt

    注:显示文本中包含games的行

        2. 查找指定行号的内容

    sed -n '2p' test.txt

    注:显示第二行的内容

        3. 查找指定行号间的内容

    sed -n '2,5p' test.txt

    注:显示2到5行的内容。

    ---恢复内容结束---

        早就知道Linux有三剑客awk,sed,grep.

        今天就来说下sed,简单来说,这个命令简单来说就是用来按行处理文件的。

        首先,我们从问题入手,文件一般都需要什么操作呢?

        答:增删改查,和数据库操作差不多,但是对于数据库来说,每个元组都有对应的主键,但是文件没有,如果一定要确定某一行的内容的话,恐怕只能依赖于行号了。

        所以今天的问题就按照增删改查来进行扩展:

        一、首先说增:

        增的话有几种呢?

        1. 指定文件某一行行号插入一行内容

    sed '2i helloworld' test.txt

    注:该命令的意思是读取test.txt文件在第二行前面加上helloworld。2i就是插入第二行。

        2.指定文件某一行行号后面加一行内容

    sed '2a helloworld' test.txt

    注:该命令的意思是读取test.txt文件在第二行后面也就是第三行加上helloworld。2a就是追加到第二行后面。

        3.在文件最后追加一行内容

    sed '$a helloworld' test.txt

    注:这里$代表最后一行的意思,在最后一行加入helloworld。

        4.可能又一个思考,就是我们前面都只是加一行内容,但如果要是加入多行的内容呢?

        二、下面该说删了:

        1. 删除指定行号的内容

    sed '2d' test.txt

    注:删除第二行的内容

        2. 删除指定行号间的内容(前闭后闭)

    sed '2,4d' test.txt

    注:删除第二行到第四行的内容。

        三、接下来是改:

        1. 修改指定开头的内容

    sed 's/^r/a/' test.txt

    注:将所有r打头的都改为a打头的

        2. 全局修改某个字符串为XX

    sed 's/r/a/g' test.txt

        3. 修改指定行号的内容

    sed '2c helloworld' test.txt

        、接下来是查

        1. 查找某一个字符串出现的行

    sed -n '/games/p' test.txt

    注:显示文本中包含games的行

        2. 查找指定行号的内容

    sed -n '2p' test.txt

    注:显示第二行的内容

        3. 查找指定行号间的内容

    sed -n '2,5p' test.txt

    注:显示2到5行的内容。

  • 相关阅读:
    MySQL库表设计小技巧
    教你用SQL实现统计排名
    Truncate用法详解
    utf8字符集下的比较规则
    关于Aborted connection告警日志的分析
    MySQL DDL详情揭露
    时间戳,这样用就对了
    在线修改主从复制选项
    20181211HW
    20181207hw
  • 原文地址:https://www.cnblogs.com/xiatianyu/p/linux-sed.html
Copyright © 2020-2023  润新知