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

时间:2015-04-05 18:46:52

标签: bash awk sed

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

1 个答案:

答案 0 :(得分:2)

最简单的用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