用awk

2014-08-28 52 views
0

轉換日期我有一個數據的文件dates.csv這樣的:用awk

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命令總是執行打印$ 1,我試圖把它迭代所有由FS="~"分開列。

我的期望的輸出是:

03/24/2014 00:00:00~08/24/2014 00:00:00~04/06/2014 00:00:00~ 

回答

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~ 
+0

感謝湯姆,它的工作以及.. – 2014-08-28 09:29:20

0

我嘗試使用while和它的工作:

#!/bin/bash 
while read data 
do 
    fDate=`date +"%m/%d/%Y %H:%M:%S" -d "$data"` 
    echo "new Date: $fDate" 
done < dates2