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行的内容。

原文地址:https://www.cnblogs.com/xiatianyu/p/linux-sed.html