sed
强项是替换一些指定的字符
![学习二十五](https://s1.51cto.com/images/blog/201803/12/96f8c424c1112863a941923d3b961dbc.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![学习二十五](https://s1.51cto.com/images/blog/201803/12/bd2dc881cf438e1aa8eba35096bb3daa.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
为了测试使用 cp ../ grep/passwd test.txt
![学习二十五](https://s1.51cto.com/images/blog/201803/12/7f9c53a23b30cdd1df0a06c49fa49a09.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
匹配会打印出所有的东西,同时匹配的内容会打印两行一般配合n使用
" + "同样要脱义 或者加 -r
![学习二十五](https://s1.51cto.com/images/blog/201803/12/fe4cb244da9df3348a6af42d5ba39de1.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
指定行数,或者5$(第五行以及之后的)
-e 表示在同一个表达式里做多个动作
Ip 在这里不区分大小写(大写i)
sed 删除行『 sed ‘1,10’d 文件名 』仅仅是不现实
-i 会直接更改文件内容
sed '1,10s/root/root/
g' test.txt 全局替换
sed -r '1,10s/ro+/r/g' test.txt
![学习二十五](https://s1.51cto.com/images/blog/201803/12/64a0842e963d928d93b8c67e9b0b95cc.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
head test.txt |sed -r 's/([^:]+):(.*):([^:]+)/\3:\2:\1/' 位置替换