簡體   English   中英

使用bash腳本處理xml文件

[英]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解析器,而不是sedawk 您仍然可以像使用sedawk一樣,從bash腳本中調用XML解析器。 使用sedawk是個壞主意,因為XML是結構化文件,是sedawk面向行文件的典型工作。 您會因使用錯誤的工具而感到頭痛。 我建議使用專用工具或具有解析XML庫的語言(例如phppythonperl或其他任何不以p開頭的語言)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM