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