Linux “如何转换日期”+;%F%T“;至RFC 2822日期列表格式
我已阅读以下问题:及。我尝试了几种不同的方法将我的时间Linux “如何转换日期”+;%F%T“;至RFC 2822日期列表格式,linux,bash,date,datetime,awk,Linux,Bash,Date,Datetime,Awk,我已阅读以下问题:及。我尝试了几种不同的方法将我的时间2017-10-12 00:34:26格式转换为date“+%F%T”格式或2017年10月12日星期四00:34:26-0400 因为我需要转换如下所示的日期列表,所以我只使用$etime作为文件中一行的变量(直到我让它工作为止) file1: 2017-10-12 00:22:26 2017-10-12 00:25:26 2017-10-12 00:28:26 2017-10-12 00:31:26 2017-10-12 00:34:26
2017-10-12 00:34:26
格式转换为date“+%F%T”
格式或2017年10月12日星期四00:34:26-0400
因为我需要转换如下所示的日期列表,所以我只使用$etime
作为文件中一行的变量(直到我让它工作为止)
file1
:
2017-10-12 00:22:26
2017-10-12 00:25:26
2017-10-12 00:28:26
2017-10-12 00:31:26
2017-10-12 00:34:26
第一次尝试:
etime=$(echo "2017-10-12 00:34:26"); date -Rd @$etime
第二次尝试:
etime=$(echo "2017-10-12 00:34:26"); | gawk '{print strftime("%c", $0)}'
虽然这两个命令不起作用,但我希望它们能起作用,然后在file1
中为每一行循环命令,因此结果将是:
Thu, 12 Oct 2017 00:22:26 -0400
Thu, 12 Oct 2017 00:25:26 -0400
Thu, 12 Oct 2017 00:28:26 -0400
Thu, 12 Oct 2017 00:31:26 -0400
Thu, 12 Oct 2017 00:34:26 -0400
有人知道在列表中转换这些日期格式的有效方法吗?非常感谢您对该问题的帮助和支持。GNUawk解决方案:
awk '{ gsub(/[-:]/," "); print strftime("%c %z",mktime($0)) }' file
-区域设置的“适当”日期和时间表示形式。(这是“C”区域设置中的“%A%B%d%T%Y”。)%c
-采用“+HHMM”格式的时区偏移量(例如,生成RFC 822/RFC 1036日期头所需的格式)%z
- 这需要
-f
选项的GNU日期:
date -R -f file1
导致
Thu, 12 Oct 2017 00:22:26 -0400
Thu, 12 Oct 2017 00:25:26 -0400
Thu, 12 Oct 2017 00:28:26 -0400
Thu, 12 Oct 2017 00:31:26 -0400
Thu, 12 Oct 2017 00:34:26 -0400
从日期
手册页:
-f
,-file=DATEFILE
像
——日期;日期文件的每行一次
及
-d
,-date=STRING
显示由字符串描述的时间,而不是“现在”
太近了!你知道如何去掉输出中的AM/PM吗?我只需要24小时的时钟。我得到这样的输出(第一行)2017年10月12日星期四12:22:26 AM-0400
,但我想RFC会是这样的:2017年10月12日星期四00:22:26-0400
。你知道怎么做吗?非常感谢您的帮助。越来越近了…现在我收到了这个2017年10月12日星期四00:22:26-0400
。(这一年不合适了,逗号也不见了)。关于如何删除AM/PM
,有什么想法吗?没有:-/它给出了:2017年10月12日星期四12:22:26 AM-0400