Если теги EXIF в изображениях верны, вы можете использовать exiftool, чтобы изменить дату модификации файла на дату, заданную тегами, а затем использовать поиск, чтобы удалить старые.
Как уже упоминал @steeldriver, mysql
вероятно, знает, как справиться с этим, если использовать правильные параметры , но FWIW вы можете сделать это с помощью awk:
awk -v RS='"' -v ORS= 'NR % 2 || gsub(/,/,";") || 1'
12,name; brand - something; something,age,sex,,,,name; brand - something; something; something,,,,,
Или, сохраняя кавычки:
awk -v RS='"' -v ORS= '{if(NR % 2) print; else{gsub(/,/,";");print RS $0 RS}}'
12,"name; brand - something; something",age,sex,,,,"name; brand - something; something; something",,,,,
Здесь используется тот же трюк, что и здесь , только возвращено :вместо изменения части вне кавычек, я изменяю часть внутри кавычки.
CSV-файлы могут быть очень сложными. Вы можете получить экранированную кавычку где-то в строке и регулярное выражение для обработки, которое будет нечитаемым и подверженным ошибкам.
Я бы предложил либо такой инструмент, как cvskit , либо небольшой скрипт на Perl или Python. Эта быстро созданная программа на питоне должна это делать:
import csv
with open('input.csv',mode='r') as csv_file:
csv_reader = csv.reader(csv_file)
for row in csv_reader:
print (',').join([f.replace(',',';') for f in row])
Лучший ответ, который я нашел, это использовать саму MySQL, добавив строку:
OPTIONALLY ENCLOSED BY '"'
Так, например, запрос на загрузку выглядит так:
LOAD DATA INFILE 'filename.csv' INTO TABLE table_name
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
IGNORE 1 LINES;