我有一个从 DB mongo 导出的 csv 文件(名为a.csv
),如下所示:
...
ABC,DN,1000,RENEW_DAY,Thu Apr 27 2017 23:19:47 GMT+0700 (ICT),1,1,4,-1
ANSLAS,DN,1000,RENEW_DAY,Thu Apr 27 2017 23:19:52 GMT+0700 (ICT),1,1,4,-1
...
我想将此文件导入MySQL,但无法插入此日期格式。所以我有一个想法将其转换为b.csv
插入到 MySQL 之前
...
ABC,DN,1000,RENEW_DAY,2017-04-27 23:19:47,1,1,4,-1
ANSLAS,DN,1000,RENEW_DAY,2017-04-27 23:19:52,1,1,4,-1
...
这是我用来在 bash 中转换日期的 bash 命令 bashdate -d"Thu Apr 27 2017 23:19:52 GMT+0700 (ICT)" +'%Y-%m-%d %H:%M:%S'
那么如何使用这样的 bash shell 自动转换它呢./process.sh a.csv b.csv
?
process.sh
#!/bin/bash
# Environment
filename=$1
filelines=`cat $filename`
for phone in $filelines ;
do
<HOW CAN CUT Filed Date and convert this and export to b.csv file>
done
答案1
您可以使用该read
命令来分隔字段。因此,您必须将字段分隔符变量设置为 来,
指示字段以逗号分隔。如果您需要在脚本中执行其他操作,您可以稍后将其更改回来:
#!/bin/bash
oldIFS=$IFS
IFS=,
while read a b c d e f g h i; do
echo "$a,$b,$c,$d,$(date -d"$e" +'%Y-%m-%d %H:%M:%S'),$f,$g,$h,$i"
done < "$1"
IFS=$oldIFS
(这假设 GNU 日期,-d
例如 FreeBSD 日期做了不同的事情。)