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版)。
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版)。
相关文章推荐
- Linux下使用sed编辑器详解
- sed或awk处理文件最后一行的实现方法
- 查看某时间段到现在的系统日志的sed命令
- SED单行脚本快速参考(流编辑器)第1/2页
- sed找到关键字所在行并将其前面的第一个字符删除的命令
- sed初学者实用说明
- sed模式空间和暂存空间的区别
- Shell正则表达式之grep、sed、awk实操笔记
- grep,awk,sed实例
- Linux sed命令基础解释
- linux sed用法
- sed详解+实例
- 利用sed,cat合并分割文件
- sed实用——文本转换
- sed高级应用——反转行
- 打印文件内容和行号
- linux之sed用法
- linux sed命令详解
- Vim实现批量注释的方法
- sed命令n,N,d,D,p,P,h,H,g,G,x解析