sed空行操作方法

sed编辑命令
p 打印匹配行
= 显示文件行号
a \ 在定位行号后附加新文本信息
i \ 在定位行号后插入新文本信息
d 删除定位行
c \ 用新文本替换定位文本
s 使用替换模式替换相应模式
r 从另一个文件中读文本
w 写文本到一个文件
q 第一个模式匹配完成后推出或立即推出
l 显示与八进制A S C I I代码等价的控制字符
{ } 在定位行执行的命令组
n 从另一个文件中读文本下一行,并附加在下一行
g 将模式2粘贴到/pattern n/
y 传送字符
n 延续到下一输入行;允许跨行的模式匹配语句

sed G
#使一个文件中每一行都占用两行空间(就是在每一行后边插一行空行)

sed '/^$/d;G'    
#先用sed  '/^$/d'  查找并删除空行;然后用 sed G插入空行

sed 'G;G'
#使一个文件中每一行都占用三行空间(就是在每一行后边插两行空行)

sed '/regex/{x;p;x;}'
#在每个含有字符串regex的行上插入一行空白行
###sed 中命令x解释为Exchange the contents of the hold and pattern spaces.
###我的理解也就是交换保留空间与模式空间的内容
###sed 中命令p为Print the current pattern space.就是打印模式空间中的内容.
###所以理解为保留空间中开始为空行,模式空间中经过sed  '/regex/'查询后为包含
###regex内容的那一行,1)x;交换模式空间和保留空间的内容,此时模式空间中内容
###为空行,保留空间中内容为含有regex内容的行, 2)p;命令打印模式空间内容(
###空行),在原文中含有regex内容的那一行的位置出现两行空行,其中后一行为
###模式空间中的内容,3)x;后交换模式空间和保留空间中的内容,....结果就是在原
###来出现regex的位置前一行加入了一行空行。

sed '/regex/G'
# 在每个含有字符串regex的行下插入一行空白行

sed '/regex/{x;p;x;G;}'
#在每个含有字符串regex的行上,下各插入一行空白行

猜你喜欢

转载自luocb1980.iteye.com/blog/1056255