sed 用法笔记

sed就用不着多做介绍了,非常强大的流编辑器,以行作为处理单位。另外还有一个神器awk可以非常方便的处理列 。平常可能觉得用用cat,more,tail,vi也差不多,但是如果遇到非常巨大的log文件,sed就会比较方便了。高级(我能说差点打成搞基了么。。。对这个世界绝望了。。)的用法基本也用不上,就记录下基本的命令什么的。。

*准备示例文件*
```
$cat passwd
1a
2b
3c
4d
5e
6f
```
基本用法
--
* 显示第2行
```
$sed -n '2p' passwd
2b
```
* 显示1到3行
```
$sed -n '1,3p' passwd
1a
2b
3c
```
* 匹配模式
```
$sed -n '/c/'p passwd
3c
```
* 行号加模式匹配    
>以下例子表示从第二行开始匹配到有c的行结束;如果如果第二行就有c,或者一直没有匹配到带c的行,则从第二行输出到行尾;
```
$sed -n '2,/c/'p passwd
2b
3c
```
* 打印匹配行行号
```
$sed -n '/b/=' passwd
2
```
* 显示整个文件
```
$sed -n '1,$p' passwd
1a
2b
3c
4d
5e
6f
```
删除文本
--
* 删除行
```
$sed '1d' passwd        #删除第一行
$sed '1,3d' passwd     #删除第一行到第三行
$sed '2,$d' passwd      #第二行到末尾所有行
$sed '$d' passwd        #删除passwd文件的最后一行
```
 * 删除匹配行
```
$sed '/b/d' passwd
$sed -n '/BEGIN/,/END/d' passwd
```
替换文本
--
```
格式:[address[,address]]s/pattern-find/replacement-pattern/[g,p,w,n]
n   1到512之间的一个数字,表示对本模式中指定模式第n次出现的情况进行替换
g   对模式空间所有出现的情况进行全局更改【缺省只替换首次出现的模式 】
p   打印模式空间的内容
w   file
```
* 全局替换
```
$sed 's/b/x/g' passwd  #将b替换成x
```
附  
[sed 简明教程][1]


  [1]: http://coolshell.cn/articles/9104.html
posted @ 2013-12-16 21:49  Ario  阅读(585)  评论(0编辑  收藏  举报