shel学习之sed操作

比起用交互的文本编辑,还有很多命令可以用。比如sed为流编辑器(Stream Edit),一个流字,这个逼格就上去了。

sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。

sed编辑器只需对数据流进行一遍处理就可以完成编辑操作。使得sed编辑器要比交互式编辑器快得多,你可以快速完成对数据的自动修改。

可以看到流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。

sed命令的格式如下:

还有参数和动作说明,我在菜鸟教程那截图一张

默认情况下,sed编辑器会将指定的命令应用到STDIN输入流上。这样你可以直接将数据通 过管道输入sed编辑器处理。

echo "this is the world" | sed 's/world/big world/' 

输出:this is the big world

如果后面接的文件,那么操作的就是文件内每行的数据,比如:sed 's/world/big world/'  testfile 会输出,但是文件内容是不会改的。

要在sed命令行上执行多个命令时,只要用-e选项就可以了。

比如:sed 's/world/big world/ ;s/this/that/' testfile

两个命令都作用到文件中的每行数据上。命令之间必须用分号隔开,并且在命令末尾和分号之间不能有空格。

如果有大量要处理的sed命令,那么将它们放进一个单独的文件中通常会更方便一些。 可以在sed命令中用-f选项来指定文件。

sed -f script1 testfile

来看看增删改

陷在testfile文件中加入几行数据

删除某几行 sed '2,5d' testfile 

增加某几行数据,sed '2a hello xin' testfile

替换行,sed '2,5c I am cool!' testfile 

也可以用来查询sed '/dog/p'  testfile ,当然我还是比较喜欢grep

参考:https://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856901.html

https://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856901.html

猜你喜欢

转载自my.oschina.net/u/2277632/blog/2961386