好吧,我完全被难住了......
场景:使用 Word 查看时包含 100 行文本的 .rtf 文件。一行中的“Linux”一词,下方有一个空行。我需要保留带有“Linux”的行并删除它下面的空行。但是,当使用 vi 查看它时,该行并不是真正的空白,因此处理删除空白行的帖子都不起作用。另外,我可以找到很多帖子来删除带有正则表达式和下一行的行,但我需要保留正则表达式行。文件中只有一行带有“Linux”一词。
我知道 sed 可以做到这一点,但一直无法弄清楚。
好吧,我完全被难住了......
场景:使用 Word 查看时包含 100 行文本的 .rtf 文件。一行中的“Linux”一词,下方有一个空行。我需要保留带有“Linux”的行并删除它下面的空行。但是,当使用 vi 查看它时,该行并不是真正的空白,因此处理删除空白行的帖子都不起作用。另外,我可以找到很多帖子来删除带有正则表达式和下一行的行,但我需要保留正则表达式行。文件中只有一行带有“Linux”一词。
我知道 sed 可以做到这一点,但一直无法弄清楚。
sed '/Linux/{n;d;}'
(...And an Answer must contain at least 30 characters.)
也许这个?我查看了一个 RTF 文件,看起来好像有回车分隔行。因此,我将它们用作记录分隔符并删除了一行,并且能够读取结果文件并且该行消失了。我不知道它是否适用于其他情况。你必须彻底测试它是否有效。我使用了 awk,因为 rtf 文件在 Unix/Linux 中不是“有效”文本文件,我认为可能sed
无法做到。
awk 'n-->0{next} /Linux/{n=1}1' RS='\r' ORS='\r' infile.rtf > outfile.rtf
如果它有效,它应该丢弃带有单词“Linux”的行下方的行。