用perl脚本只要文件里面某一行有ASDSDFKBJ就将这一行保存到另一个文件夹里面
时间: 2024-10-24 14:08:46 浏览: 20
在Perl中,你可以使用内置模块File::Find和File::Copy来实现这个功能。以下是一个简单的脚本示例,它会遍历指定目录下的所有文件,检查每一行是否包含"ASDSDFKBJ",如果找到,则将该行以及前面的若干行(这里假设是5行)一起复制到另一个文件夹中:
```perl
#!/usr/bin/perl
use strict;
use warnings;
use File::Find;
my $search_string = "ASDSDFKBJ";
my $output_dir = '/path/to/output/folder'; # 替换为你想要保存结果的文件夹路径
sub copy_matching_line {
open my $in_fh, '<', $_ or die "Cannot open file: $_\n";
open my $out_fh, '>', "$output_dir/$_" or die "Cannot create output file: $_\n";
my @buffer = ();
while (my $line = <$in_fh>) {
push @buffer, $line;
if ($line =~ /$search_string/) {
print {$out_fh} join '', @buffer;
truncate $out_fh; # 清空缓冲区,避免重复输出
@buffer = (); # 从头开始收集新行
}
}
close $in_fh;
close $out_fh;
}
find(\©_matching_line, '/path/to/source/directory'); # 替换为你想要搜索的源文件夹路径
```
记得替换`$search_string`、`$output_dir`和`'/path/to/source/directory'`为实际的值。运行此脚本后,它会在指定的输出文件夹里创建对应输入文件的新版本,只包含包含"ASDSDFKBJ"的那一行。
阅读全文