J'utilise un script Perl pour convertir le fichier au format JSON.
Voici comment se présente le script:
Perl -MJSON -F, -lane '
print to_json ({
domain => shift @F,
emails => [map {{email =>$_}} @F]
}, {canonical=>1})
' input1.txt' > output.json
Ce que je veux faire, c'est: Je veux donner des fichiers d'entrée multiplt au script ou à un dossier complet contenant les fichiers d'entrée et obtenir une seule sortie.
Dites par exemple:
Perl -MJSON -F, -lane '
print to_json ({
domain => shift @F,
emails => [map {{email =>$_}} @F]
}, {canonical=>1})
' input1.txt','input2.txt','input3.txt' > output.json
Perl -MJSON -F, -lane '
print to_json ({
domain => shift @F,
emails => [map {{email =>$_}} @F]
}, {canonical=>1})
'path/to/inputfolder/containing/inputFiles' > output.json
Comment je peux faire ça?
Vous pouvez utiliser une boucle for
:
for file in input{1..3}.txt; do
Perl -MJSON -F, -lane '
print to_json ({
domain => shift @F,
emails => [map {{email =>$_}} @F]
}, {canonical=>1})
' "$file" >> output.json
done
La première ligne pourrait aussi être
for file in /path/to/inputfolder/containing/*; do
En supposant que tous les fichiers de containing
sont des fichiers d’entrée sur lesquels vous souhaitez travailler.
N'oubliez pas d'utiliser >> output.json
pour ajouter au fichier, au lieu de >
, sinon le fichier sera écrasé à chaque itération de la boucle.