@Int64
Я всю дорогу думал, что так обнова медленно качается, впн вроде 500 мбит и летает быстро, не додумался заглянуть под капот.
Посмотрел скрипт, норм 🙂
| commands | описание |
|---|---|
| start | получить первую строку |
| end | получить последнюю строку |
start i_start i_end |
получить от начала файла от строки номер i_start до строки номер i_end |
end i_start i_end |
получить от конца файла (реверс) от строки номер i_start до строки номер i_end |
| rand | получить случайную строку |
search str out-first |
найти строку, начинающуюся с str |
search str out-all |
найти все строки, начинающиеся с str |
var full_path_exe = "D:\\test\\rand_str.exe";
var full_path_file = "D:\\test\\res.txt";
var commands = "your commands";
var args = full_path_file + " " + commands;
native_async("processmanager", "start", JSON.stringify({location: full_path_exe, working_folder: "", waitfinish: true, arguments: args, version: 2}))!
try{
var split = _result().split(",")
var output= base64_decode(split[0])
var error_msg= base64_decode(split[1])
}catch(e){
var output= _result()
}
log(output);
// для пробелов
var str = "\"строка с пробелом\""
как получить full_path_exe:
пример кода
rand_str.exe - выдаёт случайную строку
file_res - ваш файл из которого надо получить случайную строку
var file_exe = "D:\\test\\rand_str.exe";
var file_res = "D:\\test\\res.txt";
native_async("processmanager", "start", JSON.stringify({location: file_exe, working_folder: "", waitfinish: true, arguments: file_res, version: 2}))!
try{
var split = _result().split(",")
var output= base64_decode(split[0])
var error_msg= base64_decode(split[1])
}catch(e){
var output= _result()
}
log(output);
преимущества: скорость работы и низкое потребление ресурсов.
p.s. осталось научиться из rust компилировать dll для BAS
@super84 это вроде как подгружает в оперативку данные файла и метаданные/индекс для работы ресурса.
тут же более экономичный по ресурсам железа способ получить случайную строку из файла.(на линуксе со старого hdd из 5.2мб файла с прокси в среднем за 0.009-0.010 сек)
в пакете набор для получения строк под разные параметры есть, я включил только случайную строку.(получить первую или последнею строку, вывести строки в цикле от 1 до последней или от последней до первой. реализация получения конкретной строки(по порядковому номеру) не смотрел какие варианты реализации есть)
Добавлю в копилку. Возможно кому-то пригодится вариант батника, не помню когда-то нашел давно:randline.bat
А еще, если нужно мешать мега- и гигабайтные файлы - берите shuf.exe из комплекта git, самое быстрое решение.
@tet-vivi said in Построчное чтение файла.:
у версии 2 ошибка с функцией rand
исправлена ошибка, или просто ошибка?