相关文章推荐
被表白的罐头  ·  javascript - webpack ...·  1 年前    · 
痛苦的筷子  ·  java urlconnection ...·  1 年前    · 

早就知道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行的内容。