Преобразование даты в оболочке bash

У меня есть файл csv (с именем a.csv ), экспортированный из DB mongo следующим образом:

 ... 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

  • Каждая служба запускается дважды при загрузке Fedora 25
  • Как объединить арифметику bash с выходом команды?
  • Создать каталог в / var / run / при запуске
  • Хороший метод для сравнения времени?
  • вырезать фрагмент файла в зависимости от времени написания строк
  • Сценарий Ed работает только в том случае, если набирается медленно
  •  ... 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 

  • Анализ вывода даты с помощью sed
  • Преобразование и масштабирование большого количества png-изображений в jpeg
  • Как скопировать дату, меньшую, чем конкретная дата в файле
  • Как вставить первый столбец во многие файлы + как преобразовать время unix в обычное время
  • shebang и path
  • Необходимо скопировать файлы в существующий каталог и удалить файлы, которые уже существуют с тем же именем, но с другим расширением
  • One Solution collect form web for “Преобразование даты в оболочке bash”

    Вы можете использовать команду read для разделения полей. Поэтому вы должны установить переменную разделителя полей , чтобы указать, что поля разделены запятой. Вы можете позже изменить его, если вам нужно сделать другие вещи в скрипте:

     #!/bin/bash oldIFS=$IFS IFS=, while read abcdefghi; 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 делает что-то другое.)

    Linux и Unix - лучшая ОС в мире.