我有这个Perl单行程序用于从文本文件中提取列,我在这个论坛中找到了。
perl -ane "print qq(@F[0,1,3,4]\n)" ./folder/input.txt
> ./short_files/output.txt
我需要在352个名为input1.txt, input2.txt,...,input352.txt
的输入文件上运行它,并生成352个名为output1.txt, output2.txt,..., output352.txt
的输出文件。
任何人都可以帮我一个包装器代码,这样我就可以在一个循环中运行Perl单行程序,每次输入和输出文件名都会改变吗?
答案 0 :(得分:1)
您似乎想要一个Perl解决方案:
for my $in_file (glob('input*.txt')) {
( my $out_file = $in_file ) =~ s/input/output/;
open(my $fh_in, '<', $in_file)
or die("Can't open \"$in_file\": $!\n");
open(my $fh_out, '>', $out_file)
or die("Can't create \"$out_file\": $!\n");
while (<$fh_in>) {
my @F = split;
print $fh_out "@F[0,1,3,4]\n";
}
}
答案 1 :(得分:0)
bash
吗?
for i in {1..352} ; do
perl -ale ... ./folder/input$i.txt > ./short_files/output$i.txt
done