Linux
替換 Linux 伺服器上 XML 文件中的日期
我想將 XML 文件內容中的日期格式從
2013-01-21
更改為January 21
以下腳本適用於我的 mac,但不適用於 linux 伺服器(我將把它作為日常 cron 作業執行)。
#!/bin/bash while read line; do case "$line" in '<date>'*) echo '<date>' date -j -f %F `echo "$line" | sed -e 's/<date>//' -e 's-</date>--'` '+%B %d' echo '</date>' ;; *) echo "$line" ;; esac done < file.xml > newfile.xml
我得到的錯誤是
date: illegal option -f
有沒有辦法讓它在 linux 伺服器上工作?
XML文件的片段:
<show> <recordKey>SWTZ-TD-FA32DE3DE4701567</recordKey> <name><![CDATA[Turnstyle Music Group Presents: bandname]]></name> <city><![CDATA[New York]]></city> <venueName><![CDATA[The National Underground]]></venueName> <venueNameExt><![CDATA[Downstairs]]></venueNameExt> <showType><![CDATA[Bar / Pub]]></showType> <venueZip></venueZip> <venuePhone></venuePhone> <venueAddress><![CDATA[159 E Houston St.]]></venueAddress> <ticketURI><![CDATA[]]></ticketURI> <description><![CDATA[]]></description> <ageLimit>21+</ageLimit> <venueURI><![CDATA[http://www.thenationalunderground.com]]></venueURI> <ticketPrice><![CDATA[$5 , $10 at the door]]></ticketPrice> <date>2011-09-30</date> <timeSet>20:30:00.0000000</timeSet> <gmtDate>2011-10-01 00:30:00</gmtDate> <showtimeZone>America/New_York</showtimeZone> <timeDoors></timeDoors> <directLink><![CDATA[]]></directLink> <posterImage></posterImage> <lastUpdate>2011-09-21 10:46:23</lastUpdate> <stateAbbreviation>NY</stateAbbreviation> <state>New York</state> <countryAbbreviation>US</countryAbbreviation> <country>United States</country> <timeZone>America/New_York</timeZone> <deposit>No Deposit</deposit> <depositReceived><![CDATA[0.00]]></depositReceived> <artistname><![CDATA[bandname]]></artistname> <artistKey>AR-96F8FB907FA90202</artistKey> </show>
發生這種情況是因為該
date
命令的 OS X 實現取自 BSD 系列。由於您一次只輸入一行,因此使用 -d 參數應該是安全的:date -d `echo "$line" | sed -e 's/<date>//' -e 's-</date>--'` '+%B %d'
這是假設您的輸入格式在兩種
date
實現之間保持兼容。如果不是,您需要先以不同的格式獲取它。