如何为 perl 脚本提供多个输入文件?

如何为 perl 脚本提供多个输入文件?

我正在使用 perl 脚本将文件转换为 json 格式。
脚本如下:

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

我想要做的是:我想为脚本提供多个输入文件或包含输入文件的完整文件夹并获得一个输出。
例如:

 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

我怎样才能做到这一点?

答案1

您可以使用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来附加到文件,而不是>,否则文件会在循环的每次迭代中被覆盖。

相关内容