我正在使用xmlstarlet
从具有特定前置兄弟事件的元素中提取文本。来自 XML 文件的示例:
<event type='cue' units='sec'>
<onset>11.134</onset>
<duration>0.2</duration>
<value name='side'>CUER</value>
</event>
<event type='target' units='sec'>
<onset>11.367</onset>
<duration>1.26</duration>
<value name='side'>TARGETR</value>
<value name='RT' units='msec'>379</value>
<value name='TargCorr'>1</value>
<value name='feedback'>YOU WIN!</value>
</event>
<event type='anticipation' units='sec'>
<onset>12.651</onset>
<duration>2.65</duration>
<value name='TargCorr'>1</value>
<value name='feedback'>YOU WIN!</value>
</event>
从示例中,我需要执行以下操作:
- 打印的
onset
,<event type='target'
和 duration
打印的<event type='target'
和紧随duration
其后的总和<event type='anticipation'
。
onset
我可以使用选项打印正确的"preceding-sibling"
:
xmlstarlet sel -t \
-m '//event[@type="anticipation" and value[@name="feedback"]="YOU WIN!"]' \
-m 'preceding-sibling::event[@type="target" and value[@name="feedback"]="YOU WIN!"][1] ' \
-v 'onset' -o ' ' -v 'duration' -o ' ' -o '1' -n $DIR/$xml \
> $DIR/output.stf
尽管如上所写,但以下代码仅显示匹配元素的持续时间,而不是两个相邻事件的持续时间之和。后者可以使用 xmlstarlet 吗?
感谢您的帮助!