我有一个名为“input”的文件夹和一个名为“output”的文件夹。在“输入”中,我有几个.txt文件。我需要一个读取这些文件的perl脚本,编辑它们(删除10个第一行)并将新的.txt文件保存在“output”文件夹中。使用perl可以做到这一点吗?
谢谢
答案 0 :(得分:1)
为什么要使用Perl?
tail -n +N
将从N行开始输出文件,因此如果您要删除前10行,可以使用tail -n +11 file > new_file
。
要自动化文件夹中的所有文件,请参阅此bash one-liner:
for i in input/*.txt; do e=`basename $i`; tail -n +11 $i > output/${e}; done
修改:使用现代符号tail -n +N
代替较早的deprecated syntax
答案 1 :(得分:1)
#!/usr/bin/perl -w
use strict;
use warnings;
opendir IN, 'input';
my @in = grep { /^[^.]/ } readdir IN; # read all file names form dir except names started with dot
closedir IN;
for my $in (@in) {
open IN, '<', "input/$in" || next;
open OUT, '>', "output/$in" || die "can't open file output/$in";
while(<IN>) { #read file line by line
print OUT $_ if $. > 10; #print the last line $_ to the file if line number $. is bigger than 10
}
close OUT;
close IN;
}