我有一个文件dates.csv,其数据如下:
Mar 27 2014~Aug 24 2014~Apr 06 2014~
我一直在尝试将其转换为时间戳,并且在所有尝试中均未成功。
我尝试了这段代码: -
#!/bin/bash
i=0
j=`head -1 dates2| tr '~' '\n' | wc -l`
echo $i
echo $j
while [ $i -lt $j ]
do
k=`awk 'BEGIN{FS="~"}{print $(i+1)}' dates2`
echo $k
date +"%m/%d/%Y %H:%M:%S" -d "$k"
(( i++ ))
done
awk命令总是为print $ 1执行,我试图对FS="~"
分隔的所有列进行迭代。
我想要的输出是:
03/24/2014 00:00:00~08/24/2014 00:00:00~04/06/2014 00:00:00~
答案 0 :(得分:0)
我尝试使用while
并且有效:
#!/bin/bash
while read data
do
fDate=`date +"%m/%d/%Y %H:%M:%S" -d "$data"`
echo "new Date: $fDate"
done < dates2
答案 1 :(得分:0)
首先,将日期读入数组:
$ IFS='~' read -ra dates < file
然后循环遍历数组并转换每个数组,将其附加到新字符串:
$ converted=""
$ for d in "${dates[@]}"; do
converted+=$(date +"%m/%d/%Y %H:%M:%S~") -d "$d"
done
现在$converted
包含此字符串:
$ echo "$converted"
03/27/2014 00:00:00~08/24/2014 00:00:00~04/06/2014 00:00:00~