perl脚本中如何删除重复行?

现在我的一个文件里有如下几行:oss/src/includeoss/src/includeoss/src/platform/graphoss/src/platform/g... 现在我的一个文件里有如下几行:
oss/src/include
oss/src/include
oss/src/platform/graph
oss/src/platform/graph
oss\src\platform\graph
oss\src\include
我需要用perl脚本输出的文件中不能有重复行,不知道哪位大神给予讲解,本人不甚感激,谢谢!
展开
 我来答
匿名用户
2014-01-24
展开全部

假定你的文件是oss.txt,


第一步,把以下脚本保存成script.pl,

%hash = ();
while(<>) { # 对于输入文件的每一行
    chomp(); # 去除行尾换行符
    $_ =~ s/\\/\//g; # 把\替换成/,如果想区分斜杠和反斜杠则请移除本行代码
    $hash{$_}=1; # 标记该行已出现过
}
my @lines = keys(%hash); # 获得所有标记过的行
$" = "\n"; # 定义输出的分隔符是换行符
print("@lines"); # 输出


第二步,在命令行执行以下命令, 执行完成后result.txt中就是不含重复行的文件。

perl script.pl oss.txt > result.txt


比如你问题中列出的内容,过滤后的结果是


oss/src/platform/graph
oss/src/include


如果区分斜杠和反斜杠,则结果是,


oss\src\include
oss\src\platform\graph
oss/src/platform/graph
oss/src/include
自由de王国
推荐于2016-05-01 · TA获得超过1066个赞
知道小有建树答主
回答量:661
采纳率:50%
帮助的人:842万
展开全部
#!perl -w

open FH1,"1.txt";
open FH2,">2.txt";

$temp = "";
while(<FH1>)
{
if(not $temp eq $_)
{
print FH2;
$temp = $_;
}
}

close FH1;
close FH2;
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
76de1
2014-01-24 · TA获得超过1158个赞
知道小有建树答主
回答量:666
采纳率:100%
帮助的人:494万
展开全部
open F,"1.txt";#画面上文件
@array=<F>;
my %count; 
my @new = grep { ++$count{ $_ } < 2; } @array; 
print @new;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式