[英]processing xml files with bash scripting
我有一個具有以下結構的xml文件,其中包含許多<Episodes></Episodes>
,其結構如下所示:
<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
。 您仍然可以像使用sed
或awk
一樣,從bash腳本中調用XML解析器。 使用sed
或awk
是個壞主意,因為XML是結構化文件,是sed
和awk
面向行文件的典型工作。 您會因使用錯誤的工具而感到頭痛。 我建議使用專用工具或具有解析XML庫的語言(例如php
, python
或perl
或其他任何不以p
開頭的語言)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.