Como posso fornecer vários arquivos de entrada para um script perl?

3

Estou usando um script perl para converter o arquivo no formato json.
Aqui está como o script é:

perl -MJSON -F, -lane '
    print to_json ({
           domain => shift @F,
           emails => [map {{email =>$_}} @F]
           }, {canonical=>1})
' input1.txt' > output.json

O que eu quero fazer é: Eu quero dar arquivos de entrada multiplt para o script ou uma pasta completa contendo os arquivos de entrada ee obter uma única saída.
Diga por exemplo:

 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

Como posso fazer isso?

    
por Jaffer Wilson 28.01.2017 / 08:09

1 resposta

3

Você pode usar um for loop:

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

A primeira linha também pode ser

for file in /path/to/inputfolder/containing/*; do

Assumindo que todos os arquivos em containing são arquivos de entrada nos quais você deseja trabalhar.

Não se esqueça de usar >> output.json para anexar ao arquivo, em vez de > , ou o arquivo será sobrescrito a cada iteração do loop.

    
por Zanna 28.01.2017 / 08:21