写一个perl脚本,将文件file1中以D和M开头的行去除,剩余行输出到文件file2中
时间: 2023-06-13 10:04:18 浏览: 87
下面是一个简单的Perl脚本,可以实现你所需的功能:
```perl
#!/usr/bin/perl
use strict;
use warnings;
my $input_file = "file1";
my $output_file = "file2";
open(my $input_fh, "<", $input_file) or die "Can't open $input_file: $!";
open(my $output_fh, ">", $output_file) or die "Can't open $output_file: $!";
while (my $line = <$input_fh>) {
next if $line =~ /^D/ || $line =~ /^M/;
print $output_fh $line;
}
close $input_fh;
close $output_fh;
print "Done!";
```
在这个脚本中,我们首先打开输入文件和输出文件,然后使用`while`循环遍历输入文件的每一行。如果行以`D`或`M`开头,我们使用`next`跳过该行,否则将该行写入输出文件。最后,我们关闭输入和输出文件,并输出一条“完成”的消息。
你只需要将`$input_file`和`$output_file`变量设置为你自己的文件名,然后运行该脚本即可。
相关问题
用perl写一个脚本 实现把文件A中内容重复的行只保留一个
好的, 以下是 perl 脚本的代码:
```perl
#!/usr/bin/perl
use strict;
use warnings;
my $filename = 'A.txt';
my %lines;
open(my $fh, '<', $filename) or die "Error opening file: $!";
while ( my $line = <$fh> ) {
chomp $line;
$lines{$line}++;
}
close($fh);
open(my $out_fh, '>', $filename) or die "Error opening file: $!";
foreach my $line ( keys %lines ) {
print $out_fh "$line\n";
}
close($out_fh);
print "File deduplicated successfully\n";
```
以上代码会读取文件 A.txt 中的所有行,并将它们存储到一个哈希表中。哈希表会自动去重,因为每一行都是作为哈希表的key存储的。最后再将去重后的结果写回到文件 A.txt 中。
用perl写一个脚本 实现把文件A中重复内容的行删除
没有问题,以下是 perl 脚本代码:
```perl
#!/usr/bin/perl
use strict;
use warnings;
my $file = 'A.txt'; # 文件名
my %seen; # 用哈希表记录已出现的行
open(my $fh, '<', $file) or die "Can't open file $file: $!";
while (my $line = <$fh>) {
if (!$seen{$line}) { # 如果哈希表中没有出现过该行
print $line; # 输出该行
$seen{$line}++; # 将该行记录到哈希表中
}
}
close $fh;
```
你觉得如何,有更多问题可以继续问我哦。