按前缀对行进行分组

Jez*_*mas 3 unix awk sed

我有一个包含用于 i18n 的键和值的文件。该文件如下所示:

foo.foo=Some string
foo.bar=Some string
bar.foo=Some string
bar.bar=Some string
baz.foo=Some string
baz.bar=Some string
Run Code Online (Sandbox Code Playgroud)

使用像 awk 或 sed 这样的一些 unix 工具,我如何过滤文件,以便以相同前缀(直到第一个点)开头的行组合在一起,并且组由空行分隔?

输出应该看起来像

foo.foo=Some string
foo.bar=Some string

bar.foo=Some string
bar.bar=Some string

baz.foo=Some string
baz.bar=Some string
Run Code Online (Sandbox Code Playgroud)

Jot*_*tne 6

这应该做:

awk -F. '$1!=a && NR>1 {print ""} 1; {a=$1}' file
foo.foo=Some string
foo.bar=Some string

bar.foo=Some string
bar.bar=Some string

baz.foo=Some string
baz.bar=Some string
Run Code Online (Sandbox Code Playgroud)