从字段:值格式转换为 CSV
Converting from field: value format to CSV
我有一个格式如下(嗯,有点)的文件:
RECORD_SEPARATOR
foo: some foo value
bar: another value
baz: 123
RECORD_SEPARATOR
foo: another foo value
bar: yet another value
baz: 345
RECORD_SEPARATOR
foo: a third foo
RECORD_SEPARATOR
bar: a fourth bar
baz: 111
等等。这里的关键点是并非所有记录都存在所有字段。
我的问题:将此数据转换为 CSV 格式的超级简单方法是什么?也就是说,在我的例子中
foo,bar,baz
some foo value,another value,123
another foo value,yet another value,345
a third foo,,
,a fourth bar,111
当然你可以为此编写一个 awk(或 perl,或 Python)脚本,但我希望有一些预先存在的东西,或者一些技巧可以使它成为一个非常短的脚本。
注意:我正在寻找面向 Unix 命令行的东西。
与伟大的米勒一起嗨 http://johnkerl.org/miller/doc,从
开始
foo: some foo value
bar: another value
baz: 123
foo: another foo value
bar: yet another value
baz: 345
foo: a third foo
bar: a fourth bar
baz: 111
你可以运行
mlr --x2p --ips ": " --barred cat then unsparsify --fill-with "" inputFile
并有这个漂亮的打印输出
+-------------------+-------------------+-----+
| foo | bar | baz |
+-------------------+-------------------+-----+
| some foo value | another value | 123 |
| another foo value | yet another value | 345 |
| a third foo | - | - |
| - | a fourth bar | 111 |
+-------------------+-------------------+-----+
如果您想要 CSV,运行
mlr --x2c --ips ": " cat then unsparsify --fill-with "" inputFile
你将拥有
foo,bar,baz
some foo value,another value,123
another foo value,yet another value,345
a third foo,,
,a fourth bar,111
我有一个格式如下(嗯,有点)的文件:
RECORD_SEPARATOR
foo: some foo value
bar: another value
baz: 123
RECORD_SEPARATOR
foo: another foo value
bar: yet another value
baz: 345
RECORD_SEPARATOR
foo: a third foo
RECORD_SEPARATOR
bar: a fourth bar
baz: 111
等等。这里的关键点是并非所有记录都存在所有字段。
我的问题:将此数据转换为 CSV 格式的超级简单方法是什么?也就是说,在我的例子中
foo,bar,baz
some foo value,another value,123
another foo value,yet another value,345
a third foo,,
,a fourth bar,111
当然你可以为此编写一个 awk(或 perl,或 Python)脚本,但我希望有一些预先存在的东西,或者一些技巧可以使它成为一个非常短的脚本。
注意:我正在寻找面向 Unix 命令行的东西。
与伟大的米勒一起嗨 http://johnkerl.org/miller/doc,从
开始foo: some foo value
bar: another value
baz: 123
foo: another foo value
bar: yet another value
baz: 345
foo: a third foo
bar: a fourth bar
baz: 111
你可以运行
mlr --x2p --ips ": " --barred cat then unsparsify --fill-with "" inputFile
并有这个漂亮的打印输出
+-------------------+-------------------+-----+
| foo | bar | baz |
+-------------------+-------------------+-----+
| some foo value | another value | 123 |
| another foo value | yet another value | 345 |
| a third foo | - | - |
| - | a fourth bar | 111 |
+-------------------+-------------------+-----+
如果您想要 CSV,运行
mlr --x2c --ips ": " cat then unsparsify --fill-with "" inputFile
你将拥有
foo,bar,baz
some foo value,another value,123
another foo value,yet another value,345
a third foo,,
,a fourth bar,111