a.csv
아래와 같이 DB mongo에서 내보낸 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에서 날짜를 변환하는 데 사용하는 bash 명령입니다.date -d"Thu Apr 27 2017 23:19:52 GMT+0700 (ICT)" +'%Y-%m-%d %H:%M:%S'
그렇다면 이와 같은 bash 쉘을 사용하여 어떻게 자동으로 변환할 수 있습니까 ./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
(이것은 -d
FreeBSD 날짜와 마찬가지로 GNU 날짜가 다른 작업을 수행한다고 가정합니다.)