首页 > 代码库 > sed命令
sed命令
sed命令是流编辑器。
工作流程是:每次将相应的行==》模式空间(内存中)==》模式匹配在处理==》将模式空间里的内容输出到屏幕。
注:sed命令默认不处理原数据,而是处理原数据的副本。
用法
格式:sed ‘AddressCommand’ file
对指定文件中符合Address(地址筛选的行)进行Command(命令处理)
Address支持的用法:
1,起始行,结束行。例‘1,,100’(1到100行)
2,/正则匹配/ 支持正则模式匹配。里‘/^root/’(以root为行首的行)
3,/正则匹配1/,/正则匹配2/ 表示被模1式匹配到的行开始到被模式2匹配到的行
4,行号 精确匹配到某行,$表示最后一行。例‘1’(第一行)
5,起始行,+n 从起始行开始,到之后的N行
Command用法:
d:删除符合条件的行。 例 sed ‘1,2d‘ /etc/passwd(删除/etc/passwd中的第一到第二行) sed ‘/^root/d‘ /etc/passwd(删除/etc/passwd中root为行首的行) sed ‘/^\//d‘ /etc/passwd(删除etc/passwd中/开头的行,\为转意) p:显示符合条件的行。例 sed ‘/^\//p‘ /etc/passwd(显示etc/passwd中/开头的行)
a(apend) /string:在指定的行后追加字符串string新行,\n表示换行
i(insert) /string:在指定的前插入字符串string新行,\n表示换行
r file:将指定的文件的内容添加至符合条件的行处
w file:将指定的范围内的内容另存(会保存)到指定的文件中
s 查找并替换:将匹配到的内容进行替换
用法 sed ‘s/查找内容(支持正则)/替换内容(字符串,不支持正则)/修饰符‘file 。在每行中默认只替换在该行中第一次匹配到的内容。
修饰符:g 全局替换。i 忽略大小写。
注:在s命令中,只要三个分割符一样,大部分符号都可以作为分隔符,这样可以在匹配冲突时换分隔符避免使用转移符
例:sed ‘s#\(l..e\)#\1r#g‘ 文件名。或 sed ‘s#l..e#$r#g‘ 文件名
$:为引用模式匹配的所有内容。
$与后向引用的差别:只引用匹配内容中的一部分内容是,只能用后向引用。
例: sed ‘s#l\(..e\)#L\1#g‘ 文件名
sed命令选项:
-h:禁默模式,不在显示模式空间的内容
-i:直接修改原文件
-e:同时执行多个脚本 -e 地址命令 -e 地址命令 ...
-f 指定文件:sed -f /path/scripts file 表示脚本里的内容出来文件
-r:支持扩展正则
本文出自 “12955123” 博客,请务必保留此出处http://12965123.blog.51cto.com/12955123/1934212
sed命令