您的位置:首页 > 其它

sed

2015-06-16 15:11 525 查看
一.概述

1.sed本身就是一个管道命令,可以分析standard input的,而且sed可以将数据进行替换,删除,新增,选取特定行等的功能。

二.使用

1.sed [-nefr] [动作] sed

参数:

-n:安静模式,只有经过sed特殊处理的才会被列出来;

-e:在同一行执行多条命令;

-f:将sed的动作写在一个文件中,-f file_name可以执行file_name中的sed动作;

-r:sed的动作支持扩展型正则表达式;

-i:直接修改读取的文件内容;

动作:

可使用数字寻址方式,n1,n2 [动作]

也可使用文本模式过滤器:/pattern/command

p:打印;

a:新增行,在指定行的下一行;

c:替换,替换指定范围内的行;

d:删除指定的行;

i:插入行,在指定行的上一行;

s:替换字符串,如:n1,n2/s/old/new/g,将字符串old全都替换成new;

y:将字符一一替换,如/pattern/abc/xyz/g,将字符abc分别全部替换成xyz;

替换标记

数字:标明替换第几处匹配的地方;

g:全部替换;

p:替换前的内容要打印出来;

w file:将替换结果写入文件;

三.高级用法

1.特殊参数

1)N:将数据流的下一行加进来创建一个多行组来处理;

2)D:删除多行组中的一行;

3)P:打印多行组中的一行;

2.保持空间,模式空间

模式空间:是一块活动缓冲区,在sed编辑器执行时它会保存sed编辑器要校验的文本;

保持空间:sed编辑器的另一块缓冲区间;

1)h:将模式空间复制到保持空间;

2)H:将模式空间附加到保持空间;

3)g:将保持空间复制到模式空间;

4)G:将保持空间附加到模式空间;

5)x:交换保持空间和模式空间的内容;

例子:

[root@localhost]# cat data

This is the header line

This is the first line

This is the second line

This is the last line

[root@localhost]# sed -n '/first/{
=======================>使用正则表达式过滤出含有first的行

> h
=======================>使用h命令将该行放到保持空间

> p
=======================>打印模式空间的内容

> n
=======================>n命令提取数据流中下一行的内容,放入模式空间

> p
=======================>打印模式空间的内容

> g
=======================>g命令将保持空间的内容放回模式空间,替换当前文本

> p
=======================>打印模式空间的内容

> }' data

This is the first line

This is the second line

This is the first line

3.排除命令

使用!用来排除,如sed -n '/pattern/p' file可以打印匹配pattern的行,sed -n '/pattern/!p' file就可以打印不匹配pattern的行;

本文参考:

鸟哥的Linux私房菜基础学习篇(第三版),Linux命令行与shell脚本编程大全(第2版)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sed