回复 2# BANNED 是只保留第一个,但是不止name有重复的,整个文本里,a1 a2也会出现重复,但是不能删掉,也就是我只删除以name开头的重复的行,并只保留一行……可以用hash吗?我不知道具体怎么写……写出来总是不对#!/usr/bin/perl -wopen (MYFILE, "D:/new7.txt") || die ("Could not open file");open (OUTFILE,">D:/a.txt");@line= ;foreach $_(@line){if ($_=~/^name/){print OUTFILE unless $seen{$_}++;}else{ chomp;print OUTFILE "$_";}}close(OUTFILE);close(MYFILE);运行出来,什么都没删掉……
<1> 如果你要操作的文件有name的每一行都在行首的话:从你的代码来看,应该没有什么问题,你是把你要的输出重定向到了a.txt,另外还是先把记录的hash初始化一下的好,另外你把之前的唯一行都去掉了回车,重复的行又保留了....<2> 但是你的操作文件不是的话,像/^name/ 是匹配不到你所需要的....
回复 1# lynn012 重复出现的只保留第一个?是吗?可以直接用 awk:awk 'a[$0]++' urfile