1、sed:Stream Editor 行编辑器。工作原理:默认不编辑源文件,仅仅对模式空间的数据做处理。一行行将文件读入模式空间,处理完后再将模式空间的内容输出一遍。
sed和grep、awk编辑器都是shell编程中的重要工具。
2、sed语法:
sed [option] 'AddressCommand' file
-n:静默模式不再显示空间中的内容
-i:直接修改源文件,不建议使用
-e SCRipT -e SCRIPT :可以同时执行多个脚本
-f: sed -f /path/to/scripts file 执行脚本
-r:表示使用扩展正则表达式
Address:
1>StartLine,Endline
比如1,100
$代表最后一行
2>/RegExp/
/^root/
3>/pattern1/,/pattern2/
第一次被匹配到最后一次被匹配
4>LineNumber
指定的行
5>StartLine,+N
从StartLine开始,向后N行
Command:
d:删除符合条件的行
p:显示符合条件的行
a /string:在指定行后边后边追加新行,内容为string
i /string :在制定的行前边插入新行,内容为string
r FILE:将文件内容添加到符合条件的行处
w FILE:将地址指定的范围内的行写入到指定文件
s/pattern/string/ 修饰符:查找并替换,默认只替换每一行中的第一次没模式匹配到的字符串,/可以用其他的符号代替如s### s@@@
加修饰符g:全局替换
i:忽略字符大小写
&:引用模式匹配整个串
3、使用实例
sed "1,2d" /etc/fstab //删除1-2行的内容
sed “1,2d” /etc/fstab //删除1-2行的内容
sed “/^///d” /etc/fstab //删除斜线开头的行
sed -n “/^///p” /etc/fstab //-n静默模式,只显示符合条件的行,不再显示模式空间的行
sed “/^///a /#hello1/n#hello2” /etc/fstab //符合条件的行后追加两行
sed “2r /etc/issue” /etc/fstab //将符合条件的第二行后边追加上从issue文件中读取的内容
sed “/boot/w /tmp/1.txt” /etc/fstab //将符合条件的行写到目标文件
sed “s/oot/OOT/g” /etc/fstab //将文件中所有的行中凡是有oot的替换为OOT 其中g全局替换
sed ‘s#l..e#&r#g’ sed.txt // 将前边匹配到的字串用&引用
sed ‘s#/(l..e/)#/1r#g’ sed.txt // 将前边匹配到的字串用/1引用 #号里边使用/就不用转义了,里边的分组()得转义
history | sed ‘s#^[[:space:]]*##g’ | cut -d ‘ ’ -f1 //用于进行查看监控执行命令历史很好用
echo '/etc/rc.d/1.txt' | sed 's@^(/.*/)(.*)@/2@g' //取得路径的文件名(基名)取得路径文件名
新闻热点
疑难解答