如何通过将输入存储在unix中的变量中来更改日期格式?

时间:2016-06-29 10:53:34

标签: bash date unix

我的输入是

./file \[10\/04\/16 01:02:03 BST\] \[06\/08\/16 05:02:08 BST\]

我想将\[10\/04\/16 01:02:03 BST\]转换为Apr 10 16 01:02:03

我使用以下代码,

echo '\[10\/04\/16 01:02:03 BST\]' | awk -F'[][/: \\\\]+' 'BEGIN{split("Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec",m,/ /)} {print m[$3+0],$2,$4,$5":"$6":"$7}'

是否可以通过将\[10\/04\/16 01:02:03 BST\]存储在$StartTime之类的变量中并在代码中使用它来提取结果?现在我只使用一个日期。是否可以使用两个日期?

1 个答案:

答案 0 :(得分:2)

您可以使用名为script.sh的日期转换脚本:

#!/bin/bash

mydt() {
   IFS='/' read -ra arr <<< "${1//[\[\]\\]}"
   TZ=':Europe/London' date -d "${arr[1]}/${arr[0]}/${arr[2]}" '+%b %d %y %T'
}

var1="$(mydt "$1")"
var2="$(mydt "$2")"

echo "$var1"
echo "$var2"

然后将其称为:

bash script.sh '\[10\/04\/16 01:02:03 BST\]' '\[06\/08\/16 05:02:08 BST\]'

<强>输出:

Apr 10 16 01:02:03
Aug 06 16 05:02:08