Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

UoKit.com Форумы _ UO Pilot _ работа с текстом

Автор: portos 4.3.2020, 23:37

парни подскажите с lua ,как с трёх текстовых документов (1.txt,2.txt,3.txt) взять с первых строк определённые слова и вписать в четвёртый (4.txt) и так же со следующими строками

Автор: cirus 5.3.2020, 1:23

Приводите содержимое документов и что в итоге должно получится.

Цитата
определённые слова

Нужно конкретнее описывать что за слова. Могут ли они меняться, есть ли рядом с ними другие слова, какие-то числа, символы или еще что-то, чтобы понять что искать.

Автор: portos 5.3.2020, 1:45

1.txt - 81 351920450784
2.txt - 81 109.248.51.148 24531 aaaaaa 2bb2bbb2b
3.txt - 81 Mozilla/5.0 (Linux; Android 4.0; F3555 Build/23.2.B.4.70) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.125 Mobile Safari/537.362
результат
4.txt - 351920450784:nnnnnn|109.248.51.148:24531:aaaaaa:2bb2bbb2b|Mozilla/5.0 (Linux; Android 4.0; F3555 Build/23.2.B.4.70) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.125 Mobile Safari/537.362

из 1.txt берём номер (351920450784) добавляем : двоеточие и слово (оно одинаково во всех строках)
знак |
из 2.txt берём 109.248.51.148 24531 aaaaaa 2bb2bbb2b (вместо пробелов ставим smile.gif
знак |
из 3.txt берём Mozilla/5.0 (Linux; Android 4.0; F3555 Build/23.2.B.4.70) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.125 Mobile Safari/537.362

и так по порядку все строки (81 это номер строки)

Автор: cirus 5.3.2020, 2:16

код
Код
--lua
local f1 = io.open([[C:\1.txt]], "r")
local f2 = io.open([[C:\2.txt]], "r")
local f3 = io.open([[C:\3.txt]], "r")
local f4 = io.open([[C:\4.txt]], "wb")

if f1 and f2 and f3 and f4 then
    -- чтение файлов в массивы
    local arr1, arr2, arr3 = {}, {}, {}
    for v in f1:lines() do arr1[#arr1+1] = v:match("%d+%s+(.+)") end
    for v in f2:lines() do arr2[#arr2+1] = string.gsub(v:match("%d+%s+(.+)"), " ", ":") end
    for v in f3:lines() do arr3[#arr3+1] = v:match("%d+%s+(.+)") end
    f1:close()  f2:close()  f3:close()   -- закрыть файлы

    local min = math.min (#arr1, #arr2, #arr3)
    for i = 1, min do     -- запись в файл
        f4:write(arr1[i])
        f4:write(":nnnnnn|")
        f4:write(arr2[i])
        f4:write("|")
        f4:write(arr3[i])
        f4:write("\r\n")
    end
    f4:close()  -- закрыть файл
else
    log ("Какой-то из файлов не открылся или не найден")
end

Автор: portos 5.3.2020, 2:26

работает отлично и быстро ,спасибо . с lua быстрее работает чем с просто uopilot

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)