gpt4 book ai didi

Xmlstarlet,多个元素和日期排除

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:40:42 25 4
gpt4 key购买 nike

我从未使用过 xmlstarlet,所以我只是想通过输入和所需的输出来保持简单,希望我能从发布的答案中学到一些东西。

输入:

<channel>
<title>
<link>http://www.MYDOMAIN.com/</link>
<description></description>
<ttl>60</ttl>
<category>Sports</category>

<item>
<sport><![CDATA[Women's Soccer]]></sport>
<opponent><![CDATA[South Carolina (Exhibition)]]></opponent>
<location><![CDATA[Columbia, S.C.]]></location>
<date>08/09/2012</date>
<time>7:00 PM</time>
<tv><![CDATA[]]></tv>
<tournamentname><![CDATA[]]></tournamentname>
<homeaway>A</homeaway>
</item>

<item>
<sport><![CDATA[Men's Soccer]]></sport>
<opponent><![CDATA[Ohio State (Exhibition)]]></opponent>
<location><![CDATA[Fort Wayne, Ind.]]></location>
<date>08/17/2012</date>
<time>7:00 PM</time>
<tv><![CDATA[]]></tv>
<tournamentname><![CDATA[]]></tournamentname>
<homeaway>H</homeaway>
</item>

<item>
<sport><![CDATA[Women's Soccer]]></sport>
<opponent><![CDATA[William and Mary]]></opponent>
<location><![CDATA[Williamsburg, Va.]]></location>
<date>08/17/2012</date>
<time>7:00 PM</time>
<tv><![CDATA[]]></tv>
<tournamentname><![CDATA[]]></tournamentname>
<homeaway>A</homeaway>
</item>

期望的输出:

Women's Soccer Away @ South Carolina (Exhibition) at 7:00 PM
Men's Soccer Home vs Ohio State at 7:00 PM
Women's Soccer Away @ William and Mary at 7:00 PM

使这不仅仅是简单的数据操作的一些事情

1) 我想删除所有没有 <date> 的数据当前日期

2) 从所需的输出中可以看出,我想要元素 <homeaway> 的结果 A显示文本“Away @”,我希望 H 标签显示文本“Home vs”

非常感谢您的帮助,我真的很感激。

最佳答案

xmlstarlet sel --text -t \
-m '//channel[category="Sports"]/item[date="'$(date +%m/%d/%Y)'"]' \
-v sport -o ' ' \
--if 'homeaway="H"' -o 'Home vs' --else -o 'Away @' -b -o ' ' \
-v opponent -o ' ' \
-o 'at ' -v time --nl \
/tmp/rss.xml
  • -m(或--match)开始一个foreach循环
  • -b(或--break)表示endif(其实就是一般的endblock或右大括号)

关于Xmlstarlet,多个元素和日期排除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11822056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com