0
我有具有以下结构,其中包含了许多<Episodes></Episodes>
一个XML文件,其结构是这样的:使用bash脚本处理XML文件
<Episode>
<id>4195462</id>
<Combined_episodenumber>8</Combined_episodenumber>
<Combined_season>2</Combined_season>
<DVD_chapter></DVD_chapter>
<DVD_discid></DVD_discid>
<DVD_episodenumber></DVD_episodenumber>
<DVD_season></DVD_season>
<Director>Jay Karas</Director>
<EpImgFlag>2</EpImgFlag>
<EpisodeName>Karl's Wedding</EpisodeName>
<EpisodeNumber>8</EpisodeNumber>
<FirstAired>2011-11-08</FirstAired>
<GuestStars>Katee Sackhoff|Carla Gallo</GuestStars>
<IMDB_ID></IMDB_ID>
<Language>en</Language>
<Overview>Karl Hevacheck, aka the Human Genius, gets married.</Overview>
<ProductionCode>209</ProductionCode>
<Rating>7.6</Rating>
<RatingCount>20</RatingCount>
<SeasonNumber>2</SeasonNumber>
<Writer>Kevin Etten</Writer>
<absolute_number></absolute_number>
<filename>episodes/211751/4195462.jpg</filename>
<lastupdated>1362547148</lastupdated>
<seasonid>471254</seasonid>
<seriesid>211751</seriesid>
</Episode>
我已经找到了如何拉之间的信息单标签像这样
value=$(grep -m 1 "<Rating>" path_to_file | sed 's/<.*>\(.*\)<\/.*>/\1/')
但我无法找到一种方法来验证我正在查看正确的情节,即。在保存特定属性的值之前检查这是否是<Combined_season>2</Combined_season> <EpisodeNumber>8</EpisodeNumber>
的正确分支。我知道这可以以某种方式完成使用sed和awk的组合,但似乎无法弄清楚如何我可以做到这一点将不胜感激。
使用合适的XML解析器而不是'sed'或'awk'! – 2013-05-07 10:18:04
@sudo_O这个函数是一个更大的bash程序的一部分,所以我希望我可以使用其中的一个...为什么这是一个这么糟糕的主意? – brendosthoughts 2013-05-07 10:19:57
您仍然可以从您的bash脚本中调用您的XML解析器。这是一个坏主意,因为XML是一个结构化文件,sed和awk是面向行文件的典型工作。你只会使用错误的工具让自己头痛。 – 2013-05-07 10:24:37