1. SED命令的格式:
6). 执行流程控制命令:
1. 将文件中所以小写变大写: 2. 将包含"ERROR"的行, 替换为"This line has error" 3. 部分行的输出与删除
|
[address [,address]] command [argument]
address: 行数, 可以有0,1,2个地址参数, 表明命令作用于全部行,
某一行, 或者是某几连续行. 也可以是正则表达式
command: 命令, 表明进行的操作
argument: 该命令对应的参数, 只有替换命令(s)可以带参数
Command
|
功能
|
地址参数
可能个数
|
说明
|
d
|
删除一行
|
0,1,2
|
将匹配的该行文字删除, 不输出
|
n
|
读入下一行
|
0,1,2
|
将匹配行文字输出,从输入读入下一行文字, 继续执行下一个指令
|
a\
|
加入文字
|
0,1
|
将文字加入到匹配行文字后输出
|
i\
|
插入文字
|
0,1
|
将文字插入到匹配行文字前输出
|
c\
|
替换文字
|
0,1,2
|
将文字替换匹配行文字进行输出
|
Command
|
功能
|
说明
|
s
|
模式替换
|
找到匹配行, 进行替换操作
|
y
|
子元转换
|
找到匹配行, 进行子元转换
|
s命令: sed中唯一的带参数的命令, 可以有4种参数:
g参数, 在该行中, 替换所以匹配而不是只替换第一次匹配
n 参数, 在该行中, 替换第n个匹配
p参数, 对该行执行替换, 并输出该行文字
w filename 参数, 将替换后的该行写入filename文件中
如, /UNIX/s/OK/YES/g, 含UNIX的行, 所有OK->YES
该命令内嵌入vi编辑器中.
y命令: 该行中所有对应子元进行转换.
如, 1,5y/abc/edf/, 所以1到5行所有子元: a->e, b->d, c->f 转换
Command |
功能 |
地址参数 可能个数 |
说明 |
p |
送至输出 |
0,1,2 |
遇匹配行时, 输出pattern space 内容 |
l |
送至输出 |
0,1,2 |
与p类似,不同的是将键盘上无法输出的字符用8进制输出,超过72个字长的部分移到下一行 |
w filename |
写入文件 |
0,1,2 |
将匹配行文字写入文件filename中 |
r filename |
从文件读入 |
0,1,2 |
对匹配行,用filename中的文字输出 |
*SED将内部分为pattern space(工作区)和hold space(暂存区)
通常sed一次处理一行文字, 这些命令赋予多行处理能力
Command
|
功能
|
地址参数
可能个数
|
说明
|
N
|
Next line
|
0,1,2
|
与匹配行时,再读入下一行,加在当前pattern space文字的后面
|
D
|
Delete first part of pattern space
|
NO address
|
将pattern space第一个new line字母前的文字删去,仅一个newline字母时,相当于d 命令
|
P
|
Print first part
of pattern space
|
NO address
|
将pattern space第一个new line字母前的文字输出
|
pattern space与hold space文字的交互
Command
|
功能
|
地址参数
可能个数
|
说明
|
h
|
pattern space拷贝到hold space
|
0,1,2
|
将pattern space内容拷贝到hold space
|
H
|
pattern space 加到hold space
|
0,1,2
|
将pattern space内容加到hold space后
|
g
|
h反方向
|
0,1,2
|
将hold space内容拷贝到pattern space
|
G
|
H反方向
|
0,1,2
|
将hold space内容加到pattern space后
|
x
|
交互两个space
|
|
将pattern space与hold space内容交换
|
|