Преобразование даты в оболочке 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

  • shebang и path
  • Получить дату следующей субботы с определенной даты
  • Сценарий, чтобы сравнить дату работы с сегодняшней датой и выводить только сегодняшние неудачи
  • Создать скрипт для проверки размера каталога
  • Возможное состояние гонки при подключении плагинов для наушников
  • почему существует случайное поведение для фоновой работы?
  •  ... 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 

  • дата: ошибка плохого преобразования на HP-UX, но не на Linux
  • Преобразование файлов .docx в обычный текст и сохранение разрывов строк для поддержания ссылок на номера строк на исходный документ: howto & implications?
  • Добавление метки метки времени вместе с строками файла журнала
  • Запуск программы GUI при запуске
  • Помощь переименованию папки в соответствии с датой
  • Как я могу получить относительную дату на основе относительной даты командой linux date?
  • 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 - лучшая ОС в мире.