一、概述
1、 sed 全称为Stream Editor,就是行编辑器,意味着一次只处理一行文本,sed将被匹配到 的行放到自己特定的空间(通常称为模式空间)中进行编辑;然后再根据结果进行输出显示;
2、 在sed中还有一段空间称为保持空间,sed模式空间中的内容可以与保持空间的内容可以进 行自由互换,实际工作中用处很少,仅作参考;
Sed工作流程如图
二、sed命令使用
sed [OPTION]... ‘script‘ [input-file]..
常用选项:
-n:匹配到的行的内容至屏幕;
-e script, --expression=script:多点编辑;
-f /PATH/TO/SED_SCRIPT_FILE:支持使用脚本;
-r, --regexp-extended:支持使用扩展正则表达式;
-i[SUFFIX], --in-place[=SUFFIX]:直接编辑原文件,慎用;
地址定界:
关于地址定界:
可以帮助sed去定义处理哪些行,如果不加参数则处理所有的行;
(1) 空地址:对全文进行处理;
(2) 单地址:
#:指定行;
/pattern/: 被此模式所匹配到的每一行;
(3) 地址范围:
#,#:
#,+#:
#,/pattern1/
/pat1/,/pat2/
$: 最后一行;
(4) 步进地址:~
1~2:所有奇数行
2~2:所有偶数行
d:删除
p: 显示模式间中的内容;显示奇数行空
a \text :在行后面追加文本“text”,支持使用\n实现多行追加;
i \text :在行前面插入文本“text”,支持使用\n实现多行插入;与a \text使用方法相同,只是会在指定行的前面加入新行
c\text: 把匹配到的行替换为此处指定的文本“text";
w /PATH/TO/SOMEFILE: 保存模式空间匹配到的行至指定的文件中;
r/PATH/FROM/SOMEFILE: 读取指定文件的内容至当前文件被模式匹配到的行后面;文件合并;
= 为模式匹配到的行打印行号;
!:条件取反;
例: ~]# sed ‘1!d‘ /etc/passwd
root:x:0:0:root:/root:/bin/bash
s///: 查找替换,其分隔符可自行指定,常用的有s@@@,s###等;
替换标记:
g: 全局替换;
w /PATH/TO/SOMEFILE: 将替换成功的结果保存至指定文件中;
p: 显示替换成功的行;
替换查找命令在下面做两个示例:
将文件中#号替换为无:
将#包括#后面的空白字符替换为无
原文地址:http://519137.blog.51cto.com/509137/1728406