今天我们来讲下sed命令的用法,学习linux需要掌握三种最基本的文件处理工具(grep,sed,awk)。sed是行文本处理工具。sed默认不处理源文件,其有一个模式空间,仅对模式空间做处理,处理完成后在打印至屏幕。
sed [options] 'AddressCommand' file ...
选项options:
-n:静默模式,不在显示模式空间的数据 示例:sed -n '/5/p' /etc/inittab
-i:直接修改源文件
-e SCRIPT -e SCRIPT:执行多个脚本(多点编辑)示例:sed -e '1,3d' -e 's/yes/no/g' var.out
-f /PATH/TO/SED_SCRIPT:运行文件中的多点编辑
-r:使用扩展正则表达式
Address:地址(定位到具体哪一行)
1、Startline,Endline示例:1,100(一到一百行) $(最后一行)
2、/RegExp/匹配到能匹配此正则表达式所有行
3、/pattern1/,/pattern2/从第一次能被正则表达式1匹配的行到第一次能被正则表达式2匹配的行
3、LineNumber指定的行
4、StartLine,+# 从StartLine行,向后#行
Command:对筛选出来的行进行操作
d:删除符合地址条件的行
p:显示出符合条件的行
a \string:在指定的行后面追加新的行,并且新增内容,内容为string
i \string:在指定的行前面追加新的行,并且新增内容,内容为string
r FILE:将文件中的内容添加至指定的条件处(每个符合条件的行后面都添加)
w FILE:将地址范围内的内容保存至另一个文件中(会改变另存为的那个文件的内容,即FILE)
s/pattern1/string/:查找文件中匹配pattern1的字符并替换为string,默认替换第一次被模式匹配到的字符串
修饰符:
g:全局替换
i:忽略大小写
s///==>s###、s@@@
也可以使用\1来替换第一次使用\(\)的数据 示例:sed "s#\(l..e\)#\1r#g" sed.txt sed 's#l\(..e\)#L\1#g' sed.txt
&引用模式匹配的整个串示例:sed "s#l..e#&r#" sed.txt