Я уверен, что более опытные товарищи подскажут методы попроще и понадежнее, да и я вполне мог бы что-то получше придумать, если бы зашел в справку, но этот путь пришел мне в голову сразу же, потому покажу его вам:
tarr := [[], [], []]
Loop {
FileReadLine, line, 1.txt, %A_Index%
if ErrorLevel
break
tarr[3][A_Index] := line
c_Index := A_Index
RegExMatch(line, "id([0-9]+) ([0-9]+)", end_str)
if (tarr[1].length() = 0) {
tarr[1][1] := c_Index
tarr[2][1] := end_str2
continue
}
Loop % tarr[2].length()
{
if (tarr[2][tarr[2].length()] < end_str2) {
tarr[2][tarr[2].length() + 1] := end_str2
tarr[1][tarr[2].length() + 1] := c_Index
break
}
if (tarr[2][tarr[2].length() - A_Index + 1] > end_str2) and (tarr[2][tarr[2].length() - A_Index] < end_str2) {
tarr[2][tarr[2].length() - A_Index + 2] := tarr[2][tarr[2].length() - A_Index + 1]
tarr[2][tarr[2].length() - A_Index + 1] := end_str2
tarr[1][tarr[2].length() - A_Index + 2] := tarr[1][tarr[2].length() - A_Index + 1]
tarr[1][tarr[2].length() - A_Index + 1] := c_Index
break
}
}
}
For k, v in tarr[1]
{
val := tarr[3][v]
FileAppend, %val%`n, 2.txt
}
На самом деле в процессе обучения фраза "меньше строк кода" не самый лучший подход. Дело в том, что когда вы учитесь чему-то, лучше делать все по-своему, пусть это и костыли, пусть вы используете 200 строк вместо 20. Я почти уверен, что в процессе обучения у вас не стоит задача написать что-то с максимальным быстродействием и минимальным потреблением памяти (это и есть цель минимизации кода). Ограничивая себя вы лишь лишаете себя возможности узнать как работают те или иные команды, которые в "эталонном" решении может быть и не нужны сейчас, но обязательно понадобятся в будущем. Не спорю, что необходимо перенимать более надежные и продвинутые методы у более опытных товарищей, но это не панацея. Пока функциональность вашего скрипта не зависит от выбранного вами метода напрямую (кроме вышеупомянутой скорости и количества потребляемой памяти - что на практике очень редко дает какое-то существенное преимущество) лучше заимствовать лишь алгоритмы (пути достижения цели), а достигать их нужно самому.
Когда вы говорите что не можете сделать, вам всего-лишь не хватает фантазии придумать какой-нибудь костыль.