我有一个包含以下信息的XML文件:
<Key Time="54288" Type="insert" Value="E" />
<Key Time="55288" Type="insert" Value="A" />
<Key Time="58298" Type="insert" Value="O" />
我需要计算每个Key条目之间的总暂停持续时间,但仅在暂停时(一个“Time”和另一个之间的间隔)等于或高于2400.有人可以帮我使用Perl脚本是什么?
答案 0 :(得分: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
答案 1 :(得分:0)
这个&#34;单行&#34;
怎么样?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
中。您可以使用任何电子表格软件打开此文件,它会自动知道将输出放在一个表格列中。