Como você está trabalhando com arquivos JSON, por que não analisá-lo como tal? Instale nodejs-legacy
e crie um script NodeJS como:
#!/usr/bin/env node
// parseline.js process lines one by one
'use strict';
var readline = require('readline');
var rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
terminal: false
});
rl.on('line', function(line){
var obj = JSON.parse(line);
// add the fields which you want to extract here:
var fields = [
obj.data.headers.to,
obj.data.headers.subject,
// etc.
];
// print the fields, joined by a comma (CSV, duh.)
// No escaping is done, so if the subject contains ',',
// then you need additional post-processing.
console.log(fields.join(','));
});
Supondo que você tenha uma string JSON válida em cada linha de um arquivo:
node parseline.js < some.txt
Ou se você realmente quiser ler um único arquivo e analisar campos a partir dele:
#!/usr/bin/env node
// parsefile.js - fully read file and parse some data out of it
'use strict';
var filename = process.argv[1]; // first argument
var fs = require('fs');
var text = fs.readFileSync(filename).toString();
var obj = JSON.parse(text);
// add the fields which you want to extract here:
var fields = [
obj.data.headers.to,
obj.data.headers.subject,
// etc.
];
// print the fields, joined by a comma (CSV, duh.)
// No escaping is done, so if the subject contains ',',
// then you need additional post-processing.
console.log(fields.join(','));
Em seguida, execute-o com:
node parsefile.js yourfile.json > yourfile.csv