Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 从文件中删除重复项的perl代码_Regex_Perl - Fatal编程技术网

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'
        ];