我有一个文本文件,我需要删除第一个空行,然后删除第二个空行之后的所有文本

I have a text file and I need to delete the first blank line and then all the text after the 2nd blank line

我正在使用 bash 并且我有一个包含 3 个文本部分的文件。第一部分,然后是一个空行,然后是第二部分,然后是另一个空行,然后是文件 3 的文本部分。我需要将其输出到一个新文件,该文件仅包含前两部分,中间没有空行。我一直在玩 sed 和 awk,但不太明白。

最简单的 awk:

awk -v RS= 'NR <= 2' filename

使用空记录分隔符 RS,awk 将文件拆分为空行处的记录。选择 NR <= 2,仅打印前两个(由默认输出记录分隔符分隔,这是一个换行符)。

如果文件很大,将其修改为

可能是明智的
awk -v RS= '1; NR == 2 { exit }' filename

这将在第二条记录之后停止处理文件并打印直到那时的所有内容。

补遗: 必备的疯狂sed解决方案(不推荐使用,写的好玩):

sed -n '/^$/ { x; /./q; H; d; }; p' filename