Необходимо изменить скрипт оболочки, используемый для разделения CSV на несколько частей по имени и порядку номера записи, используя строку cmd и windows 10 - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть удобный сценарий оболочки, который я нашел на странице EdmondsCommerce Github и при запуске из командной строки cmder4 разделит мой файл на 2 части, но при желании работает на 99%. Этот файл имеет несколько полей с более чем 593000 записей и имеет столбец «num», который я использую для индексации (числовое увеличение всех записей). Я упомянул, что это работает на 99%, потому что скрипт выводит имена файлов как «split_aa» и «split_ab» без расширения. Я рассмотрел другие подходы для попытки этого, и ни один из них не работал с такой эффективностью в разделении. В соответствии с этим post команда split не достигнет того, что я хочу сделать, - это разделить файл с файлом заголовка в каждом файле и указать максимальное количество записей для каждого файла. Я убежден, что это разделит сотни мегабайт в течение нескольких секунд, когда я видел проблемы с запуском Awk на windows 10 и не хотел использовать powershell или что-то еще.

Я хотел бы, чтобы он численно индексировал файлы в порядке их создания с расширением 'csv', но я не знаю, как go внести изменения в скрипт. т.е. split_01.csv и split_02.csv

В настоящее время я использую утилиту Bulk Rename для переименования файлов после того, как файлы созданы, поэтому, если было 100 разделенных файлов, я мог бы переименовать их по порядку, но я бы Как быть в состоянии отформатировать наименование на лету без использования дополнительного инструмента. Вот снимок экрана того, как я переименовываю файлы в инструменте Bulk Renaming Utility из последовательных букв, созданных в последовательные цифры в порядке их создания.

Если у вас есть способ изменить это к тому, что я ищу, я был бы очень признателен. Обратите внимание, что я использую windows 10 и cmder и хотел бы придерживаться этого подхода.

tail -n +2 AquaCafe_20200427.csv| split -l 300000 - split_
for file in split_*
do
    head -n 1 AquaCafe_20200427.csv> tmp_file
    cat $file >> tmp_file
    mv -f tmp_file $file
done
...