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命令更加直观也更加可靠!