1

重複の可能性:
コマンドラインから日付の形式を変更するにはどうすればよいですか?

XML ファイルをダウンロードする夜間の cron ジョブを実行しています。XML ファイルには、次のような形式の日付が含まれています。

<date>2011-09-30</date>

各日付を次のようにフォーマットする 2 つ目の cron ジョブを設定したいと思います。

<date>September 30</date>

ファイルを保存します。

シェルスクリプトでこれを行う良い方法はありますか?

4

3 に答える 3

1

あなたはこれを使うことができます:

date '+%Y-%m-%dT%T.%N'
于 2013-01-21T21:57:45.677 に答える
1

Xpathとシェル ツールを使用したソリューション:

XML サンプル:

$ cat sample.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<doc>
<date>2011-09-30</date>
</doc>

xmllintXpathで日付を取得する:

$ dat=$(xmllint --xpath '/doc/date/text()' sample.xml )
$ echo $dat
2011-09-30

ここで、日付の形式を変換します:

$ new_dat=$(date -d "$dat" "+%B %d")

(代わりに現在の日付が必要な場合は、 を使用してくださいnew_dat=$(date "+%B %d"))

xml を次のように編集しxmlstarletます。

$ xmlstarlet edit -L -u "/doc/date" -v "$new_dat" sample.xml 

ついに

$ cat sample.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<doc>
  <date>septembre 30</date>
</doc>
于 2013-01-21T22:02:39.727 に答える
0

ある日付形式のファイルを別の日付形式にフィルター処理する (標準入力から std 出力への) 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
于 2013-01-21T22:47:06.437 に答える