shell中的sed命令
sed命令 主要是对文本进行编辑,当需要对文本进行反复操作,或者编写脚本时,会经常用到!sed命令的组成 和其他命令不太一样的是多了个动作。一般都是命令 -参数 正则变量,文本变量。在sed中可以在正则变量里添加动作,而且一说到正则肯定离不开转义字符,它的转义字符也不太一样。
参数
参数 | 功能 | 备注 |
---|---|---|
-e | 以指定的script来处理输入的文本文件。 | Expression,就类似于执行匹配的正则 |
-n | 只打印符合条件的文本 | only(N) grep的 是o |
-r | 正则表达式 | RegularExpression(R) |
-i | 原地修改文件 | 类似于vi中 i |
-f | 指定正则文件来进行进一步的操作 | -File和e是有区别的 |
动作 (常用部分)
WARING:所有的动作都必须加上单引号,否则无效
参数 | 功能 | 备注 |
---|---|---|
a | 追加 | append |
i | 增加 | increase |
p | 打印 | |
d | 删除 | delete |
c | 替换 | |
s | 替换(通常跟正则表达式一起连用) | |
r | 从别的文件中读 | read,类似于< |
w | 将结果写入(保存)到文件中 | write,类型与>重定向 |
& | 保存查找串以便在替换串中引用 | 定位符(表引用,引用匹配的文本) |
例子
文本准备:more /etc/hosts |head -10 >a.txt
1.
[root@localhost ~]# sed ‘’ a.txt #对文件什么都不做
[root@localhost ~]# sed -n ‘p’ a.txt #打印每一行,并取消默认输出
[root@localhost ~]# sed -n ‘1p’ a.txt #打印第1行
[root@localhost ~]# sed -n ‘2p’ a.txt #打印第2行
[root@localhost ~]# sed -n ‘1,5p’ a.txt #打印1到5行
[root@localhost ~]# sed -n ‘$p’ a.txt #打印最后1行
2.
[root@localhost ~]# sed ‘$a99999’ a.txt #文件最后一行下面增加内容
[root@localhost ~]# sed ‘a99999’ a.txt #文件每行下面增加内容
[root@localhost ~]# sed ‘5a99999’ a.txt #文件第5行下面增加内容
[root@localhost ~]# sed ‘$i99999’ a.txt #文件最后一行上一行增加内容
[root@localhost ~]# sed ‘i99999’ a.txt #文件每行上一行增加内容
[root@localhost ~]# sed ‘6i99999’ a.txt #文件第6行上一行增加内容
[root@localhost ~]# sed ‘/^bin/ihello’ a.txt #以bin开头行的上一行插入内容