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