在保留带正则表达式的行的同时,仅删除正则表达式后面的行

时间:2013-03-20 18:41:48

标签: sed

好吧,我完全被难过......

场景:使用Word查看时包含100行文本的.rtf文件。单词“Linux”在一行上,下面有一个空行。我需要保留“Linux”行,并删除它下面的空白行。但是,使用vi查看时,该行并不是真正空白,因此没有任何处理删除空行的帖子不起作用。此外,我可以找到很多帖子来删除正则表达式和下一行的行,但我需要保持正则表达式行。文件中只有一行带有“Linux”字样。

我知道sed可以做到这一点,但一直无法弄明白。

2 个答案:

答案 0 :(得分:1)

sed '/Linux/{n;d;}'

(...答案必须包含至少30个字符。)

答案 1 :(得分:0)

也许这个?我看了一下RTF文件,看起来好像有回车分隔线。所以我使用那些作为记录分隔符并删除了一行,并且能够读取生成的文件并且行已经消失。我不知道它是否适用于其他情况。如果它有效,你必须彻底测试。我使用awk,因为rtf文件在Unix / Linux中不是“有效”的文本文件,我想可能sed不能这样做..

awk 'n-->0{next} /Linux/{n=1}1' RS='\r' ORS='\r' infile.rtf > outfile.rtf

如果它有效,它应该丢弃该行下面的行“Linux”。