我有一个文本文件,我需要删除第一个空行,然后删除第二个空行之后的所有文本
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
我正在使用 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