1 (изменено: Андрейка 007, 2016-08-31 17:37:11)

Тема: AHK: Цикл чтения файла

Есть текстовый  документ (D\1.txt) .В нём около 300 тыс. строк

20160830,100000,96180.000000000,9,0,96180.000000000
20160830,100000,96180.000000000,50,0,96180.000000000
20160830,100000,96180.000000000,5,0,96180.000000000
20160830,100000,96180.000000000,3,0,96180.000000000
20160830,100000,96180.000000000,20,0,96180.000000000
20160830,100000,96170.000000000,1,96170.000000000,96180.000000000
20160830,100000,96170.000000000,1,96170.000000000,96180.000000000


Нужно преобразовать этот документ так , что-бы на выходе получился документ2 (D\2.txt),те отсечь лишнее от запятой
20160830,100000,96180.000000000,9
20160830,100000,96180.000000000,50
20160830,100000,96180.000000000,5
20160830,100000,96180.000000000,3
20160830,100000,96180.000000000,20
20160830,100000,96170.000000000,1
20160830,100000,96170.000000000,1


Всё что смог это

FileRead,Var1,  D:\1.txt
Var1_ := RegExMatch(Var1, "([0-9]+),([0-9]+),([0-9]+).([0-9]+),([0-9]+)", FoundA)

2

Re: AHK: Цикл чтения файла

Loop, Read, 1.txt
{
RegExMatch(A_LoopReadLine, "([0-9]+),([0-9]+),([0-9]+).([0-9]+),([0-9]+)", FoundA)
;MsgBox, %FoundA%
FileAppend, %FoundA%`r`n, 2.txt
}

3

Re: AHK: Цикл чтения файла

Решение в командной строке (cmd.exe):

(for /f "tokens=1-4 delims=," %1 in (D:\1.txt) do @echo %1,%2,%3,%4)>D:\2.txt

Для многократного использования можно создать ярлык на cmd.exe:

cmd.exe /d /q /e /c (for /f "tokens=1-4 delims=," %1 in (D:\1.txt) do @echo %1,%2,%3,%4)>D:\2.txt

,
причём в свойствах ярлыка можно указать запуск в свёрнутом окне,
а если постараться — в скрытом окне;
или пакетный файл (удвоив знаки «%»!!!).

Забыл пароль и потерял e-mail.

4 (изменено: yalanne, 2016-08-31 19:33:37)

Re: AHK: Цикл чтения файла

Или так:

FileRead,Text,  1.txt
Text_ := RegExReplace(	RegExReplace(text,"((?:(?:\d+\.?\d?+),?){5}).*(`r`n|$)","$1$2")		,	",(`r`n|$)","$1")
FileAppend, %Text_%`r`n, 2.txt

Работает с несколькими строками одновременно, оставляет 5 частей в каждой строке, остальное заменяется на пустоту.
Второй заменой убирается запятая в конце.

5

Re: AHK: Цикл чтения файла

FileRead, text, D:\1.txt
FileAppend, % RegExReplace(text, "m`a),[^,]+,[^,]+$"), D:\2.txt
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

6

Re: AHK: Цикл чтения файла

teadrinker
А как это работает?
Почему там много символов начала строки^?

p.s в англ. не силен, в основном на метод тыка полагаюсь.

7

Re: AHK: Цикл чтения файла

^ в квадратных скобках — это не начало строки, он означает любой символ, кроме перечисленных в скобках. Без английского в программировании никак, надо учить потихонечку.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

8

Re: AHK: Цикл чтения файла

Или так:

FileRead, text, D:\1.txt
FileAppend, % RegExReplace(text, "m`a)(,[^,]+){2}$"), D:\2.txt
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

9

Re: AHK: Цикл чтения файла

Всем огромное спасибо .teadrinker - Сделали то что надо. Работает быстро и точно.

FileRead, text, D:\1.txt
FileAppend, % RegExReplace(text, "m`a)(,[^,]+){2}$"), D:\2.txt