用perl写一个脚本 实现把文件A中内容重复的行只保留一个
时间: 2024-05-13 11:20:25 浏览: 10
好的, 以下是 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;
```
你觉得如何,有更多问题可以继续问我哦。
写个perl脚本,能把好几个文件的内容都结合到一个文件里
好的,以下是一个简单的Perl脚本,可以将指定的多个文件的内容合并到一个文件中:
```perl
#!/usr/bin/perl
# 打开输出文件
open my $out_fh, '>', 'output.txt' or die "无法创建输出文件: $!";
# 遍历所有指定的输入文件
foreach my $file (@ARGV) {
# 打开输入文件
open my $in_fh, '<', $file or die "无法打开输入文件 '$file': $!";
# 将输入文件内容写入输出文件
while (my $line = <$in_fh>) {
print $out_fh $line;
}
# 关闭输入文件
close $in_fh;
}
# 关闭输出文件
close $out_fh;
```
使用方法:
- 将上述代码保存为一个文件,例如 `merge_files.pl`。
- 打开命令行终端或控制台,进入包含待合并文件的目录。
- 运行以下命令:
```
perl merge_files.pl file1.txt file2.txt file3.txt ...
```
其中 `file1.txt`、`file2.txt`、`file3.txt` 等为待合并的文件名,可以根据实际情况修改。此命令将会将指定的多个文件的内容合并到一个名为 `output.txt` 的输出文件中。