sed是流式编辑器,是针对文档的行来操作的。grep只能实现查找功能,不能把查找的内容替换。vim可以实现替换,它只能在文本的内部操作,不能输出的屏幕上。而sed工具就可以替换文本并把它输出到屏幕上,而且他还有很多其他功能。
打印某行
打印文件的第五行 :sed -n '5'p 7.txt
不加-n选项会把要求的行打印两遍,其它内容一样也会打印出来。
打印文件的第一行到第五行 :sed -n '1,5'p 7.txt
打印文件的第五行到最后一行 :sed -n '5,$'p 7.txt
打印包含某个字符串的行
sed -n '/root/'p 7.txt
sed也可以使用grep中可以使用的符号
打印以数字1开头的行 :sed -n '/^1/'p 7.txt
打印 in结尾的行 :sed -n '/in$/'p 7.txt
还有 . 和 * 符号
使用符号+时要在+前面加脱义字符 \ 或者使用 -r选项 :sed -nr '/r+o/' 7.txt
大括号 { } 问号?还有 符号 | 和加号 +一样,要在前面加脱义字符或 -r选项。
使用 -e选项可以实现多个行为
不区分大小写 :sed -n '/root/'Ip 7.txt
删除某些行 参数d表示删除的动作
删除一到八十行 :sed '1,80'd 7.txt
删除有字符串root的行 :sed '/root/'d 7.txt
这些操作知识在屏幕上不显示这些行,文件并没有修改。
替换字符或者字符串
把文件中的bin替换成wae
参数s表示替换,g表示本行全局替换,不加g只会替换这一行的第一个。
我们可以把分隔符/ 换成#或@
删除文档中所有的数字或字母
删除数字
如果是删除所有字母
调换两个字符串的位置
用sed在某一行前后增加指定的内容
在每一行行首加上123
直接修改文件内容
上面的删除、替换、调换的操作都不会对文件本身的内容有影响,如果要对文件本身进行修改就要使用 -i 选项。
比如我先查看文件前十行的内容
然后删除这十行,加上 -i选项
再查看文件内容发现原来的十行已经不见了。