1

可能重复:
如何从命令行更改日期格式?

我正在运行一个下载和 XML 文件的夜间 cron 作业。XML 文件的日期格式如下:

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

我想设置第二个 cron 作业,将每个日期更改为如下格式:

<date>September 30</date>

然后保存文件。

有没有用 shell 脚本来做这件事的好方法?

4

3 回答 3

1

使用Xpath和 shell 工具的解决方案:

XML 示例:

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

xmllint使用Xpath获取日期:

$ 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 回答
1

你可以使用这个:

date '+%Y-%m-%dT%T.%N'
于 2013-01-21T21:57:45.677 回答
0

用于将具有一种日期格式的文件过滤(标准输入到标准输出)到另一种日期格式的 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 回答