sed

一.概述

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版)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值