- 介绍
- 语法
- 参数
- 案例
- 如果不加-n,会发现所有内容都出现了,因为默认不修改的内容是会返回的,p是为了打印内容
- 我们也可以来一个第二行和往下的三行
- 这里如果不加-i,只会得到一个打印出来没有game内容行的文本内容,而没有直接对文本进行修改,并且这个时候我们就不需要再进行-n了,没有意义了
- 我们也可以来个某行之下的所有内容进行删除,这里主要了解 5,$d 的用法
- 一样的,如果我们不加入-i,得到的也只是终端数据,文本数据还是原来的样子
- 这是在行后加入,如果想要行前加入,利用i内置命令,2i就是第二行之前加入
- 我们还可以添加多行信息(这里其实就和python当中一样了)
- 另外如果不加数字呢?我们可以对所有行后面的内容进行添加
- 全部合在一起(去头去尾法)
- 我们也可以利用-e多次编辑的方式进行去头去尾
介绍
sed是stream editor(字符流编辑器)的缩写,简称流编辑器。
sed是操作、过滤和转换文本内容的强大工具。
常用功能包括结合正则表达式对文件实现快速增删改查,其中查询的功能中最常用的两大功能是过滤(过滤指定字符串)、取行(取出指定的行)。
sed工作流程图:


大致的意思就是一个文件数据,利用sed进行处理,sed会根据一定的规则条件来进行筛选其中的内容,对于满足的规则条件的可以进行增删改查,其他全部返回到原文件当中不进行修改。
语法
参数

sed的内置命令符用于对文件进行不同的操作功能,如对文件增删改查。
sed匹配范围
案例
1.输出文件第2、3行内容
如果不加-n,会发现所有内容都出现了,因为默认不修改的内容是会返回的,p是为了打印内容
sed -n “2,3p” lianxi.txt
我们也可以来一个第二行和往下的三行
sed -n “2,+3p” lianxi.txt
2.过滤出含有linux的字符串行
sed -n “/linux/p” lianxi.txt
3.删除含有game的行
这里如果不加-i,只会得到一个打印出来没有game内容行的文本内容,而没有直接对文本进行修改,并且这个时候我们就不需要再进行-n了,没有意义了
sed -i “/game/d” lianxi.txt
我们也可以来个某行之下的所有内容进行删除,这里主要了解 5,$d 的用法
sed -i “5,$d” lianxi.txt
4.将文件中的My全部替换为His
sed “s/你想替换掉的内容/替换后的内容/g” ( / 还可以换成#、@,意思是一样的 )
一样的,如果我们不加入-i,得到的也只是终端数据,文本数据还是原来的样子
sed “s/My/His/g” lianxi.txt
5.追加命令操作
我们可以利用-e参数,进行多次的命令执行
sed -e “s/My/His/g” -e “s/23234/888888/g” lianxi.txt #这里就是执行了两次两种类型的替换 sed -e “s/My/His/g;s/23234/888888/g” lianxi.txt #意思是一样的,看自己习惯
6.在文件第二行后追加内容,利用a字符功能,写入到文件
这是在行后加入,如果想要行前加入,利用i内置命令,2i就是第二行之前加入
sed -i “2a balabala.” lianxi.txt
我们还可以添加多行信息(这里其实就和python当中一样了)
sed -i “2a 我可以这样加入.\n原来我还能跳行加入” lianxi.txt
另外如果不加数字呢?我们可以对所有行后面的内容进行添加
sed -i “a —————“ lianxi.txt
7.更改内容同时备份
sed -i.bak “2a balabala.” lianxi.txt #可以对操作的文件保留原文件进行备份
