[root@localhost ~]# sed [选项] ‘[动作]’ 文件名
选项:
-n: 一般 sed 命令会把所有数据都输出到屏幕,如果加入此选择,则只会
把经过 sed 命令处理的行输出到屏幕。
-e: 允许对输入数据应用多条 sed 命令编辑。
-f 脚本文件名: 从 sed 脚本中读入 sed 操作。和 awk 命令的-f 非常类似。
-r: 在 sed 中支持扩展正则表达式。
-i: 用 sed 的修改结果直接修改读取数据的文件,而不是由屏幕输出
动作:
a \: 追加,在当前行后添加一行或多行。添加多行时,除最后 一行外,
每行末尾需要用“\”代表数据未完结。
c \: 行替换,用 c 后面的字符串替换原数据行,替换多行时,除最后一行
外,每行末尾需用“\”代表数据未完结。
i \: 插入,在当期行前插入一行或多行。插入多行时,除最后 一行外,
每行末尾需要用“\”代表数据未完结。
d: 删除,删除指定的行。
p: 打印,输出指定的行。
s: 字串替换,用一个字符串替换另外一个字符串。格式为“行范围 s/
旧字串/新字串/g”(和 vim 中的替换格式类似)。
[root@localhost ~]# sed '2p' student.txt
ID Name PHP Linux MySQL Average
1 Liming 82 95 86 87.66
1 Liming 82 95 86 87.66
2 Sc 74 96 87 85.66
3 Tg 99 83 93 91.66
只输出第二行
[root@localhost ~]# sed -n '2p' student.txt
1 Liming 82 95 86 87.66
[root@localhost ~]# sed '2,4d' student.txt
#删除第二行到第四行的数据
ID Name PHP Linux MySQL Average
[root@localhost ~]# cat student.txt
#但是文件本身并没有修改
ID Name PHP Linux MySQL Average
1 Liming 82 95 86 87.66
2 Sc 74 96 87 85.66
3 Tg 99 83 93 91.66
[root@localhost ~]# sed '2a hello' student.txt
#在第二行后加入 hello
[root@localhost ~]# sed '2i hello \
> world' student.txt
#在第二行前插入两行数据
[root@localhost ~]# sed -n '2i hello \
#只查看 sed 命令操作的数据
> world' student.txt
“-n”只查看 sed 命令操作的数据,而不是查看所有数据。
字符串替换
“c”动作是进行整行替换的,如果仅仅想替换行中的部分数据,就要使用“s”动作了。s 动作
的格式是:
[root@localhost ~]# sed ‘s/旧字串/新字串/g’ 文件名
[root@localhost ~]# sed '3s/74/99/g' student.txt
#在第三行中,把 74 换成 99
[root@localhost ~]# sed '4s/^/#/g' student.txt
#这里使用正则表达式,“^”代表行首
[root@localhost ~]# sed -e 's/Liming//g ; s/Tg//g' student.txt
#同时把“Liming”和“Tg”替换为空
“-e”选项可以同时执行多个 sed 动作,当然如果只是执行一个动作也可以使用“-e”选项,但
是这时没有什么意义。还要注意,多个动作之间要用“;”号或回车分割
[root@localhost ~]# sed -e 's/Liming//g
> s/Tg//g' student.txt
网友评论