Sed总结2

理解Sed稍微复杂点的代码,就必须对PatternSpace和HoldingSpace有清晰的理解,下面是网上的一个理解:

sed在处理文件的时候,每一行都需要存放在一个叫“模式空间”的临时缓存区!每处理完一行,便清理一次(patternspace),并把下一行再次放入! 而保留空间(holespace),是当sed用到h命令的时候,把匹配的模式放在一个叫做"holdbuffer"的保留缓冲里,但需要使用G(sed的取得命令)的时候,sed从这个保留空间(holdspace)中取得(G)

从n命令看sed的pattern space:

函数参数n 表示读入下一行资料。其指令格式如下:
[address1[ ,address2]] n

sed执行读入下一行动作的情况如下:
1 输出在pattern space 的数据。
2 将下一笔资料读到pattern space。
3 执行下一个编辑指令。

对于1,如果使用了-n选项,则其输出会被抑制

对于2、3,配合起来就能够达到处理特殊行的目的。如下例所示:

命令: sed -n 'n;p' datainput

datainput原始文件:

1 This is what I meant.
2 I love u more than I can say.
3 1+2=3
4 BLue SKy blue sEE
5 DO I speak ENglish?
6
7 See is not Sea~
8 Home!
9
10

输出:

2 I love u more than I can say.
4 BLue SKy blue sEE
6
8 Home!
10

如何打印奇数行呢?用N~

sed -n 'N;P' datainput

输出:

1 This is what I meant.
3 1+2=3
5 DO I speak ENglish?
7 See is not Sea~
9

N读入下一行数据到ps,N输出ps中第一行数据。反复如此,则每两行中总只有第一行输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值