sed编辑器称为流编辑器,与普通的编辑器不同,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。
常用命令
一 替换命令 s
s/pattern/replacement/flags
flags有4种可用的替换标记
1.数字 ,表明新文本将替换第几处模式匹配的地方
2. g,表明新文本将替换所有已有文本出现的地方
3. p ,表明原来行的内容要打印出来
4. w file ,将替换的结果写到文件中
如:sed `s/test/trial/2 ` data5, sed编辑器只替换每行中第二次出现的匹配模式
-n 选项会禁止sed编辑器输出,如果将p标记与 -n 配合使用,则只输出被替换的行
如果替换的文本中包含路径,则需要用反斜线来转义 路径分隔符 /
如:sed `s/\/bin/bash/\/bin\/csh` /etc/passwd
默认情况下,sed编辑器中使用的命令会作用于文本数据的所有行。可以通过使用行寻址指定命令作用与特定的行
有2种行寻址方式
1 行的数字范围
2 用文本模式来过滤出某行
格式如下:
[address]command
或者
address{
command1
command2
}
在命令中 指定的可以是单个行号,或者是起始行号,逗号以及结尾行号指定一个范围。
如果想将一条命令作用到文本中某行开始到结尾的所有行,可以用特殊地址 $ 符号
如:sed `2,$s/dog/cat/` data1
sed编辑器也允许指定文本模式来过来出命令要作用的行,格式如下:
/pattern/command
二 删除命令
删除命令d 会删除匹配指定寻址模式的
所有行,如果在使用该命令时,你忘记加一个寻址模式,则流中所有文本行都会被删除
三 插入和附加命令
sed编辑器允许像数据流中插入数据
1. 插入命令 i 会在指定的行前增加一个新行
2 追加命令 a 会在指定的行后增加一个新行
需要注意的是,不能在单个命令行上使用这两个命令
格式如下:
sed `[address]command\new line`
四 修改命令
修改命令c 允许修改数据流中整行文本的内容。
五 转换命令
转换命令 y 可以处理单个字符,格式如下:
[address]y/inchars/outchars/
转换命令会对inchars和outchars值进行一对一的映射处理。如果inchars和outchars的长度不同,则sed 会产生一条错误信息。
六 打印命令
sed 有三个打印命令:
1. 小写 p 命令用来打印文本行
2. 等号= 命令用来打印行号
3. 小写 l 命令用来列出行
七 sed和文件一起工作
1. 像文件写入
w 命令用来向文件写入行,格式如下:
[address]w filename
例如:sed `1,2w test` data1,将数据流中前两行写到 test 文件
2. 从文件读取数据
读取命令 r 从一个文件的数据插入到数据流中,格式如下:
[address]r filename。
sed 编辑器会将数据插入到地址之后