将grep匹配管道插入sed

时间:2018-12-13 07:42:56

标签: bash

我有一个看起来像这样的文件:

EntryName1
1234
1234
1234
EntryName2

EntryName3
1234
1234
1234
[...]

我需要删除所有条目后跟一个空行。我可以用grep -E '^$' -B 1 myFile.txt复制空行和相应的entryName。

现在,我想以某种方式将它们作为模式传递到sed中,以便从文件中删除这些行。我该怎么办?

编辑:预期的输出应如下所示(留空行也可以)。

EntryName1
1234
1234
1234
EntryName3
1234
1234
1234
[...]

3 个答案:

答案 0 :(得分:3)

较短的listWithResultMaps

awk

awk 'p != "" && NF{print p} {p=$0} END{print p}' file

答案 1 :(得分:1)

使用awk。

awk '/^$/ { a = ""; next }
     { printf "%s", a; a = $0 ORS }
     END { printf "%s",a }' file

答案 2 :(得分:1)

具有gawk和multichar RS支持:

gawk 'BEGIN{RS="\n[^\n]+\n\n"}1' file