Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Разбить файл (столбцы) на 3 файла (больше 100000 строк)

Ответить
Настройки темы
CMD/BAT - Разбить файл (столбцы) на 3 файла (больше 100000 строк)

Аватара для paulomyaulo

Новый участник


Сообщения: 11
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: paulomyaulo
Дата: 31-03-2022
Добрый день! Всем привет
Довольно долго искал, но все таки не нашел, что нужно, и сам не дотумкал как сделать красиво.
Есть текстовой файл, такого типа, 100 000 строк и более, разделены запятыми.
Нужно, чтобы каждый столбец оказался в отдельном файле (естественно без запятых). Я нашел прогу csv сплиттер, но она делит по строкам)))

780558633,54537525,288302340878
787960363,50901274,288300919910
604657003,72563209,261370625223
188604993,71649010,226307046040
897750293,41710968,292302487462
182028204,82116863,291305433774
881659655,36183815,291302833466
183923996,2487409,223300805238
185262987,810706,261360303267
781004248,70868973,288304241383
197473909,36217102,226303620030
788146790,51256534,288301081029
876505493,44654881,234363471421

cat file.csv | %{ $_.split(',')[2] } > new-file

нашел вот такое, но там только 1 столбец откусывается)

Отправлено: 14:45, 31-03-2022

 

Аватара для paulomyaulo

Новый участник


Сообщения: 11
Благодарности: 0

Профиль | Отправить PM | Цитировать


В другом чатике подсказали, вот такой способ.
convertfrom-csv -delimiter ',' -inputobject (get-content -path file.txt) -header '1','2','3' | foreach-object {
Add-content -value $_.1 -path 1.txt -force
Add-content -value $_.2 -path 2.txt -force
Add-content -value $_.3 -path 3.txt -force}

Отправлено: 16:58, 31-03-2022 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


paulomyaulo, я попробовал CMD, убедился, что при большом числе строк CMD делает очень долго. Вот .vbs -скрипт. Тестировал на 200000 строках
Код: Выделить весь код
FileIn = "Z:\Box_In\allcolumns200000.txt"
'FileIn = "Z:\Box_In\allcolumns.txt"

FileOut1 = "Z:\Box_In\allcolumns_split1.txt"
FileOut2 = "Z:\Box_In\allcolumns_split2.txt"
FileOut3 = "Z:\Box_In\allcolumns_split3.txt"

Timing = vbCrLf + vbCrLf + CStr(Now)
With CreateObject("Scripting.FileSystemObject")
    On Error Resume Next

    Set FIn = .OpenTextFile(FileIn, 1, False)
    
    If Err.Number <> 0 Then
        MsgBox "File   " + FileIn + vbCrLf + Err.Description + " (" + CStr(Err.Number) + ")", 16
        WScript.Quit 2
    End If
    On Error GoTo 0
    
    Set FOut0 = .OpenTextFile(FileOut1, 2, True)
    Set FOut1 = .OpenTextFile(FileOut2, 2, True)
    Set FOut2 = .OpenTextFile(FileOut3, 2, True)
    
    Do While Not FIn.AtEndOfStream
        S = FIn.ReadLine
        SS = Split(S, ",")
        FOut0.WriteLine SS(0)
        FOut1.WriteLine SS(1)
        FOut2.WriteLine SS(2)
    Loop
    
    FIn.Close
    FOut0.Close
    FOut1.Close
    FOut2.Close
End With
MsgBox "Готово" + Timing + vbCrLf + CStr(Now), 64

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:27, 31-03-2022 | #3


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6705
Благодарности: 1576

Профиль | Отправить PM | Цитировать


Powershell
Код: Выделить весь код
$csv = import-csv "D:\temp\tt.txt" -Header "1","2","3"

$csv.1 > "D:\temp\1.txt"
$csv.2 > "D:\temp\2.txt"
$csv.3 > "D:\temp\3.txt"

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:54, 31-03-2022 | #4


Аватара для paulomyaulo

Новый участник


Сообщения: 11
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата DJ Mogarych:
sv.1 > "D:\temp\1.txt"
$csv.2 > "D:\temp\2.txt"
$csv.3 > "D:\temp\3.txt" »
Все супер! спасибо! а может подскажете, чтобы он ещё путь создавал указанный, или конечную папку?

Отправлено: 09:24, 01-04-2022 | #5


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6705
Благодарности: 1576

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
New-Item D:\temp\rrr\ddd\jjj\fff\1.txt -Force

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 19:13, 01-04-2022 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Разбить файл (столбцы) на 3 файла (больше 100000 строк)

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - [решено] Получить диапазон строк из файла, изменить текст по шаблону и перезап. файл с изм. 9119 Скриптовые языки администрирования Windows 5 26-06-2021 09:15
CMD/BAT - [решено] разбить файл на много файлов по шаблону и каждый файл положить в папку Mezolick Скриптовые языки администрирования Windows 3 03-02-2017 08:38
CMD/BAT - [решено] разбить/разделить файл по количеству строк shmel_sv@vk Скриптовые языки администрирования Windows 3 15-01-2015 21:07
Любой язык - [решено] Как разбить одну строку на много строк KooDI Скриптовые языки администрирования Windows 56 06-08-2013 23:26
Как разбить AVI больше 4 Гб на 2 части? bafi Видео и аудио: обработка и кодирование 6 09-07-2009 18:47




 
Переход