Как я могу дать несколько входных файлов сценарию жемчуга?

Я использую сценарий жемчуга для преобразования файла в json формат.
Вот то, как сценарий:

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

То, что я хочу сделать: Я хочу дать входные файлы multiplt сценарию или полной папке, содержащей входные файлы и и получить один единственный вывод.
Скажите, например:

 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

Как я могу сделать это?

2
задан 28 January 2017 в 10:23

1 ответ

Вы могли использовать a 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

Первая строка могла также быть

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

Принятие всех файлов в containing входные файлы, Вы хотите продолжить работать.

Не забывайте использовать >> output.json добавлять в файл, вместо >, или файл будет перезаписан с каждым повторением цикла.

3
ответ дан 2 December 2019 в 02:48

Другие вопросы по тегам:

Похожие вопросы: