我有一个perl脚本,我想阻止输入,如
var snd = new Audio("data:audio/wav;base64,omitted, see jsfiddle");
var beepcount = 0;
var beep = function() {
if ((beepcount++ % 5) < 3) {
snd.play();
}
setTimeout(beep,200);
}
beep();
从两次显示相同的行,所需的输出
Referer: http://www.apple.com/.
Referer: http://www.apple.com/diversity/.
Referer: http://www.apple.com/diversity/.
Referer: http://www.apple.com/diversity/.
Referer: http://www.apple.com/.
Referer: http://www.apple.com/apple-events/september-2015/.
另外,我怎么能摆脱“。”在每一行的结尾? 提前谢谢!
答案 0 :(得分:2)
首先问问自己,如何使用铅笔和纸张解决这个问题,您可以在源页面上一次发现一行,然后将其写入另一页。您可以使用白板暂时跟踪事物。
所以这是该算法的Perl实现。但是,可以用多种语言实现相同的算法。
open my $infile, '<', shift or die $!;
my $whiteboard = q{};
while( <$infile> ) {
print unless $_ eq $whiteboard;
$whiteboard = $_;
}
这可以写成像这样的Perl单行:
perl -ne 'print unless defined $tmp && $tmp eq $_; $tmp = $_;' filename.txt
问题的第二部分是如何消除尾随点。因此,对于第一个示例,您可能会这样做:
open my $infile, '<', shift or die $!;
my $whiteboard = q{};
while( <$infile> ) {
s/\.$//;
print unless $_ eq $whiteboard;
$whiteboard = $_;
}
或者作为一个单行:
perl -ne 's/\.$//; print unless defined $tmp && $tmp eq $_; $tmp = $_;' filename.txt
答案 1 :(得分:0)
如果您不关心订单,可以试试这个:
perl -nale 's/\.$//; $h{$_}++; END{foreach(keys %h){print}}' /path/to/file
使用s/\.$//;
删除行尾的.
。并使用哈希删除重复的行。