如何使用sed在不同起始标记的行组之间插入空白行?
使用sed在不同起始标记的行组间插入空白行
需求说明
输入内容(按开头数字分组的行):
12 line1 12 line2 12 line3 13 line4 13 line5
期望输出(不同组之间插入空白行):
12 line1 12 line2 12 line3 13 line4 13 line5
解决方案
可以使用以下sed命令实现:
sed -e '$!N; /^\([0-9]*\) .*\n\1 /!s/\n/\n\n/; P; D' input.txt
命令解释
$!N:除最后一行外,将下一行内容追加到当前模式空间中,实现两行对比/^\([0-9]*\) .*\n\1 /!:正则匹配当前行开头的数字标记和下一行开头标记不一致的情况s/\n/\n\n/:当满足上述不匹配条件时,在两行之间插入一个换行符(即空白行)P; D:打印模式空间中的第一行内容,然后删除第一行并继续处理剩余内容,循环完成所有行的处理
内容的提问来源于stack exchange,提问作者dataman
相关产品推荐
相关产品推荐

