web-dev-qa-db-fra.com

Comment puis-je donner plusieurs fichiers d'entrée à un script Perl?

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

ou

 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?

2
Jaffer Wilson

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.

3
Zanna