Regex 从文件中删除重复项的perl代码
我有一个文件(比如说Regex 从文件中删除重复项的perl代码,regex,perl,Regex,Perl,我有一个文件(比如说bugs.txt),它是通过运行一些代码生成的。此文件包含JIRAS列表。我想写一个代码,可以删除此文件中的重复条目 逻辑应该是通用的,因为bugs.txt文件每次都会不同 示例输入文件bugs.txt: BUG-111, BUG-122, BUG-123, BUG-111, BUG-123, JIRA-221, JIRA-234, JIRA-221 样本输出: BUG-111, BUG-122, BUG-123, JIRA-221, JIRA-234 我的试用代码: m
bugs.txt
),它是通过运行一些代码生成的。此文件包含JIRAS列表。我想写一个代码,可以删除此文件中的重复条目
逻辑应该是通用的,因为bugs.txt文件每次都会不同
示例输入文件bugs.txt
:
BUG-111, BUG-122, BUG-123, BUG-111, BUG-123, JIRA-221, JIRA-234, JIRA-221
样本输出:
BUG-111, BUG-122, BUG-123, JIRA-221, JIRA-234
我的试用代码:
my $file1="/path/to/file/bugs.txt";
my $Jira_nums;
open(FH, '<', $file1) or die $!;
{
local $/;
$Jira_nums = <FH>;
}
close FH;
my$file1=“/path/to/file/bugs.txt”;
我的$Jira_nums;
打开(FH,您可以尝试以下操作:
use strict;
use warnings;
my @bugs = "";
@bugs = split /\,?(\s+)/, $_ while(<DATA>);
my @Sequenced = map {$_=~s/\s*//g; $_} RemoveDup(@bugs);
print "@Sequenced\n";
sub RemoveDup { my %checked; grep !$checked{$_}++, @_; }
__DATA__
BUG-111, BUG-122, BUG-123, BUG-111, BUG-123, JIRA-221, JIRA-234, JIRA-221
使用严格;
使用警告;
我的@bug=”“;
@bugs=split/\,?(\s+/,$\uwhile();
my@Sequenced=map{$\=~s/\s*//g;$\}RemoveDup(@bugs);
打印“@Sequenced\n”;
sub-RemoveDup{my%checked;grep!$checked{$\u}++,@\ u;}
__资料__
BUG-111、BUG-122、BUG-123、BUG-111、BUG-123、JIRA-221、JIRA-234、JIRA-221
您只需在脚本中添加以下行:
my %seen;
my @no_dups = grep{!$seen{$_}++}split/,?\s/,$Jira_nums;
您将获得:
use strict;
use warnings;
use Data::Dumper;
my $file1="/path/to/file/bugs.txt";
my $Jira_nums;
open(my $FH, '<', $file1) or die $!; # use lexical file handler
{
local $/;
$Jira_nums = <$FH>;
}
my %seen;
my @no_dups = grep{!$seen{$_}++}split/,?\s/,$Jira_nums;
say Dumper \@no_dups;
它给出:
$VAR1 = [
'BUG-111',
'BUG-122',
'BUG-123',
'JIRA-221',
'JIRA-234'
];
是否可能是单行文件的重复项?如果不是,是否要删除存在于不同行上的重复项?是@Toto,这可能是一个单行或多行文件。想法是从整个文件中删除重复项。感谢@Toto,建议的单行解决方案对我有效。
$VAR1 = [
'BUG-111',
'BUG-122',
'BUG-123',
'JIRA-221',
'JIRA-234'
];