2014-07-10 21 views
1

该实施例示出了输出文件大得多吨的exatractxmlstarlet SEL不显示后续行正确

xmlstarlet fo jira-output.xml | egrep 'hours|username|worklog|work_date' | egrep -v 'external|time' | head -20 

给我大约这样的:

#<worklogs date_from="2014-06-01 00:00:00" date_to="2014-06-30 23:59:59" number_of_worklogs="222" format="xml" diffOnly="false" errorsOnly="false" validOnly="false" addBillingInfo="false" addIssueSummary="false" addIssueDescription="false" duration_ms="106" headerOnly="false" userName="" addIssueDetails="false" addParentIssue="false" addUserDetails="false" addWorklogDetails="false" billingKey="" issueKey="" projectKey=""> 
# <worklog> 
# <worklog_id>15650</worklog_id> 
# <hours>0.11666667</hours> 
# <work_date>2014-06-07</work_date> 
# <username>cadalso</username> 
# </worklog> 
# <worklog> 
# <worklog_id>15653</worklog_id> 
# <hours>0.2</hours> 
# <work_date>2014-06-07</work_date> 
# <username>cadalso</username> 
# </worklog> 
# <worklog> 
# <worklog_id>15941</worklog_id> 
# <hours>4.0</hours> 
# <work_date>2014-06-17</work_date> 
# <username>mrjcleaver</username> 
# </worklog> 
# <worklog> 
#</worklogs> 

这很好地执行,共计

xmlstarlet sel -T -t -v "sum(worklogs/worklog/hours)" --nl jira-output.xml 

这个总数是不同的,但只是因为XML文件中有更多的行

4.31666667 

但下面

xmlstarlet sel -T -t -m /worklogs/worklog/worklog_id -v "concat('|',/worklogs/worklog/staff_id,' | ', /worklogs/worklog/worklog_id,' | ',/worklogs/worklog/work_date,' | ',/worklogs/worklog/hours,' |')" --nl jira-output.xml 

表演:

#| cadalso | 15650 | 2014-06-07 | 0.11666667 | 
#| cadalso | 15650 | 2014-06-07 | 0.11666667 | 
#| cadalso | 15650 | 2014-06-07 | 0.11666667 | 
#... one for each row, but with the wrong values 

而我想要的是:

#| cadalso | 15650 | 2014-06-07 | 0.11666667 | 
#| cadalso | 15653 | 2014-06-07 | 0.2 | 
#| mrjcleaver | 15941 | 2014-06-17 | 4.0 | 

我在做什么错? 谢谢,M.

+0

你在'concat'表达式中使用绝对路径,相对于'-m'atched一个路径尝试。 – npostavs

回答

1

非常感谢npostavs,得到的答复是:

xmlstarlet sel -T -t -m /worklogs/worklog -v "concat('|',staff_id,' | ', worklog_id,' | ',work_date,' | ',hours,' |')" --nl jira-output.xml