我不太确定如何表达这个问题,但是这里是:
我有一个命令以``adDateLastConnected:2018年8月23日,星期四12:00:07 PM''的格式返回与应用程序的上次连接日期。我设法去除了第一部分,只显示了日期,但我想以更标准的日期格式(例如08-23-2018 12:00:07 PM)查看。
这是一件小事,还是比我怀疑的要复杂得多?我不确定我的无知有多深:-)
答案 0 :(得分:3)
GNU日期对于解释人类风格的日期格式非常有用:
#!/bin/bash
if [[ $(date --version) != *GNU* ]]
then
echo "Sorry, this script only works with GNU date." >&2
exit 1
fi
# Make locale independent
export LC_ALL=C
# Strip the " at " part
x="${1// at / }"
echo "ISO time: $(date --iso-8601=seconds -d "$x")"
echo "Unix time: $(date -d "$x" +%s)"
示例:
$ ./myscript "Thursday, August 23, 2018 at 12:00:07 PM"
ISO time: 2018-08-23T12:00:07-07:00
Unix time: 1535050807
答案 1 :(得分:0)
这并不困难。您可以使用sed或gawk(awk)进行格式化,其中任何一种都可以为您完成工作。
AWK的示例:
awk '
BEGIN { FS = OFS = "," }
{ split($3, date, /\//)
$3 = date[3] "-" date[2] "-" date[1]
print $0
}
' infile