0

我有一个包含以下信息的 XML 文件:

<Key Time="54288" Type="insert" Value="E" />

<Key Time="55288" Type="insert" Value="A" />

<Key Time="58298" Type="insert" Value="O" />

我需要计算每个键条目之间的总暂停持续时间,但只有当暂停(一个“时间”和另一个之间的间隔)等于或高于 2400 时。有人可以帮我用 Perl 脚本吗?

4

2 回答 2

3

使用xsh,一个围绕XML::LibXML的包装器:

open data.xml ;
for //Key[preceding-sibling::Key] {
    $pause = @Time - preceding-sibling::Key[1]/@Time ;
    if ($pause >= 2400) echo $pause ;
}

输出:

3010
于 2013-09-19T06:36:38.857 回答
0

这个“单线”怎么样

perl -nle '
   /<Key +Time\s*=\s*"([0-9]+)\s*"/ and push @nums,$1; 
   END{ 
       for(1..$#nums){ 
           $pause=$nums[$_]-$nums[$_-1];
           $pause >=2400 ? print "$pause started at ".$nums[$_-1] : ()
       }
   }' your_file_here > output_file

这会将程序的输出保存到文件output_file中。您可以使用任何电子表格软件打开此文件,它会自动知道将输出放在一个表格列中。

于 2013-09-19T09:50:25.080 回答