删除文本行,直到到达新的空白行

时间:2018-08-04 16:43:47

标签: awk sed grep

我正在寻找一种方法来删除文件中的所有文本,直到到达新的空白行。例如:

SimpleIndexingProgressMonitor progressMonitor = new SimpleIndexingProgressMonitor();
fullTextSession
                .createIndexer(Address.class)
                .typesToIndexInParallel(1)
                .batchSizeToLoadObjects(50)
                .cacheMode(CacheMode.IGNORE)
                .threadsToLoadObjects(30)
                .idFetchSize(150)
                .progressMonitor(progressMonitor)
                .startAndWait();

应该最终看起来像这样:

Line 1
Line 2

Line 3
Line 4
Line 5

谢谢。

2 个答案:

答案 0 :(得分:2)

您可以使用awk并测试0个字段。 (如果行只有空格或制表符,则算作空白也可以)

awk 't;NF==0 {t=1}' file
Line 3
Line 4
Line 5

t;打印行,如果为真

NF==0测试字段数= 0

如果字段为0,则设置t=1

可以简化一些:

awk 't;!NF{t=1}' file

答案 1 :(得分:0)

这可能对您有用(GNU sed):

sed '0,/^$/d' file

从第1行删除所有行,直到一个空行。这是GNU特定的n.b。 1,/^$/d填充不包括第1行,因此,如果第1行为空,并且文件的其余部分为非空行,则会删除整个文件。

替代方法,适用于所有sed:

sed -n '/^$/{:a;n;p;ba}' file

关闭自动打印-n选项。仅打印第一个空行之后的文件末尾的行。