我正在阅读GNU Core Utils手册,并且正在尝试使用date命令。这是我在正文中找到的内容:
date
命令有一个-f datefile
选项:
在第28章(日期输入格式)中指出:
date命令的输出并不总是可以接受为日期字符串,这不仅是因为语言问题,而且还因为时区项目(例如“ IST”)没有标准含义。当使用date生成打算稍后解析的日期字符串时,请指定一种日期格式,该日期格式与语言无关,并且不使用“ UTC”和“ Z”以外的时区项目。这里有一些方法可以做到这一点:
$ LC_ALL = C TZ = UTC0日期
2004年3月1日星期一1:0:21:42
由于某种原因,它对我不起作用。日期文件中的date命令出了点问题(引号错误,某些我不知道的特殊语法...),或者该-f datefile
选项无法处理这种情况。
我总要问的是:
非常感谢
安德烈
将由GNU日期正确解析的日期时间的正确格式为:
$ LC_ALL=C TZ=UTC0 date +"%Y-%m-%dT%H:%M:%S%z"
2016-09-28T04:08:55+0000
并且这也避免了空间,而空间可能产生其他问题。
如果您的文件每个日期包含一行,例如:
$ cat dates.txt
1992-03-28T14:26:01+0000
2004-02-29T21:02:02+0000
2005-02-28T21:02:03+0000
2015-07-02T11:52:04+0000
2016-03-31T01:36:05+0000
然后这将起作用:
$ TZ=America/Los_Angeles date -f infile
Sat Mar 28 06:26:01 PST 1992
Sun Feb 29 13:02:02 PST 2004
Mon Feb 28 13:02:03 PST 2005
Thu Jul 2 04:52:04 PDT 2015
Wed Mar 30 18:36:05 PDT 2016
如果要执行的操作是使用“日期命令”创建一个文件,如下所示:
$ cat dates.txt
date -d "1992-03-28T14:26:01+0000"
date -d "2004-02-29T21:02:02+0000"
LC_ALL=C TZ=UTC0 date -d "2005-02-28T21:02:03+0000" +"%Y-%m-%d"
TZ=America/Los_Angeles date -d "2005-02-28T21:02:03+0000"
date -d "2015-07-02T11:52:04+0000"
date -d "2016-03-31T01:36:05+0000"
然后,您需要使用shell执行每一行。
一种快速的解决方案是获取文件,然后执行所有命令。
$ . ./dates.txt
Sat Mar 28 14:26:01 GMT 1992
Sun Feb 29 21:02:02 GMT 2004
2005-02-28
Mon Feb 28 13:02:03 PST 2005
Thu Jul 2 11:52:04 GMT 2015
Thu Mar 31 01:36:05 GMT 2016
这回答了你的问题了吗?
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句