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