将普通数据转换成json文件

1 debian text-processing json

每个人。我对 linux 很陌生,我和你们一起阅读这个网站学到了很多东西。我的会计程序遇到了一些麻烦,这就是我经常向您提出的原因。我想将我的数据从纯文本移动到 json,我相信这会给我更好的结果和更大的灵活性。

我有一个文件夹,其中包含分隔文件中的信息。文件是这样的:

20170404
pago
80051442-4
002-001-0080057
310000


310000
si
2017-06-05
Run Code Online (Sandbox Code Playgroud)

我想将此信息复制到新文件中,其中每一行都是一个新的 json 字段。像这样的东西:

{
"field1":"20170404",
"field2":"pago",
"field3":"80051442-4",
"field4":"002-001-0080057",
"field5":"310000"
"field6":"",
"field7":"";
"field8":"310000"
"field9":"si"
"field10":"2017-06-05"
}
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个脚本来读取整个目录并构建这些新文件:oldfile.json。

之后,我想在不同列中标记其中几个文件的结果:

file1    field1    field2    field3   field4    field5    field6    field7
file2    field1    field2    field3   field4    field5    field6    field7
file3    field1    field2    field3   field4    field5    field6    field7
file4    field1    field2    field3   field4    field5    field6    field7
file5    field1    field2    field3   field4    field5    field6    field7
Run Code Online (Sandbox Code Playgroud)

谢谢大家的时间。

Rom*_*est 5

我会使用jq工具(一个合适的 JSON 解析/操作工具)来解决这个问题:

for f in *; do
    jq -R -s 'rtrimstr("\n") | split("\n") | to_entries | reduce .[] as $o ({}; .["field" + ($o.key+1|tostring)] |= $o.value )' "$f" > "$f".json; 
done
Run Code Online (Sandbox Code Playgroud)
  • -R--raw-input)联合-s--slurp) -整个输入传递到所述过滤器作为一个长字符串