2014-07-10 23 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