从零开始学习Linux(四十五):Shell编程之sed命令

1、sed简介

sed是Linux平台中的一种轻量级的流编辑器。
sed主要是用来将数据进行选取、替换、删除、新增的命令。
sed命令不仅可以修改文件内容,还可以修改命令结果,支持管道符操作。而vi/vim命令只能修改文件内容。

2、sed命令

命令格式:sed [选项] '[动作]' 文件名

选项说明:

  • -n:一般sed命令会把所有数据都输出到屏幕,如果加入此选择,则只会把经过sed命令处理的行输出到屏幕;
  • -e:允许对输入数据应用多条sed编辑命令;
  • -i:用sed的修改结果直接修改文件,而不是由屏幕输出;

动作说明:

  • a:追加,在当前行后添加一行或多行。添加多行时,除最后一行外,每行末尾需要用“\”代表数据未完结;
  • c:行替换,用c后面的字符串替换原数据行,替换多行时,除最后一行外,每行末尾需用“\”代表数据未完结;
  • i : 插入,在当前行插入一行或多行。插入多行时,除最后 一行外,每行末尾需要用“\”代表数据未完结;
  • d:删除,删除指定的行;
  • p:打印,输出指定的行;
  • s:字符串替换,用一个字符串替换另外一个字符串。格式为"行范围s/旧字串/新字串/g";

3、sed命令示例

测试使用成绩表score.txt,内容如下图所示:

3.1、p使用—输出第二行数据

执行命令:

sed '2p' score.txt

从图中可以看到重复输出了第二行,而且其他行也输出了。我们的目的是想只输出第二行,其他的行不输出,此时需要加入-n参数。

执行命令:

sed -n '2p' score.txt
3.2、p使用—输出多行数据

执行命令:

sed -n '1,2p' score.txt

命令执行结果如下图所示:

3.3、d使用-删除多行数据

执行命令:

sed '2,3d' score.txt

从上图中可以看到,删除了第二行到第三行的数据。再次查看文件内容,发现文件本身没有被修改。

3.4、a使用—追加数据

执行命令:

sed '2a hello world' score.txt

执行命令:

sed '2a hello \
world!!!' score.txt

说明:命令不会改变文件内容!

3.5、i使用—插入多条数据

执行命令:

sed '2i hello \
world!!!' score.txt

说明:命令不会改变文件内容!

3.6、c使用—行替换
sed '3c hello world' score.txt

命令执行结果如下图所示:

3.7、s使用—字符串替换

sed 's/旧字串/新字串/g' 文件名

执行命令,将Jay的英语成绩更改为99:

sed '2s/92/99/g' score.txt

命令执行结果如下图所示:

说明:命令不会改变文件内容!

3.8、修改文件内容

执行命令,将Jay更改为Zhou:

sed -i 's/Jay/Zhou/g' score.txt

命令执行结果没有任何返回信息,如下图所示:

再次查看文件内容,发现名称已经变更。

说明:此种场景使用不多,如果真的需要更改文件,直接使用vim命令更加直观也更加可靠!

你可能感兴趣的:(从零开始学习Linux(四十五):Shell编程之sed命令)