|
|
|
Найти текст в документе и показать всю строку, Найти текст в документе и показать всю строку |
|
|
FREEON |
30.6.2019, 1:04
|
Journeyman
Сообщений: 365
Регистрация: 14.2.2017 Группа: Пользователи Наличность: 1316
Пользователь №: 18.346
Возраст: 25
|
|
|
|
|
FREEON |
18.7.2019, 2:17
|
Journeyman
Сообщений: 365
Регистрация: 14.2.2017 Группа: Пользователи Наличность: 1316
Пользователь №: 18.346
Возраст: 25
|
Попробовал из файла загрузить находит чисто первре слово, но у меня немного другая задача: нужно найти слово в блокноте и показать номер строки, если это слово встречается несколько раз вывести все его позиции. так же голову ломаю над вторым скриптом: И к примеру нужен перебор искомых значений для примера от 1 до 100 то есть сперва ищем число 1 и выводим номера строк где она встречается. Затем ищем 2 и выводим номера строк. Важно что бы 1 это было как 1 а не 11, 18 или 21, 41 и тому подобное к примеру такой будет тексовик Цитата 1 2 3 4 5 6 7 8 9 10 11 12 13 1 2 3 4 7 8 13 15 17 19 23 24 28 4 7 8 13 14 16 18 23 25 26 27 29 30 5 6 13 14 15 19 20 21 22 23 26 27 32 3 4 5 6 8 9 17 18 20 40 53 60 61 1 2 7 8 9 18 23 25 28 30 40 41 42 3 5 6 13 14 17 32 40 45 46 47 48 49 2 5 8 15 20 24 26 27 28 29 43 50 51 5 8 9 28 40 43 48 53 54 55 56 57 165 1 2 8 9 12 13 15 18 41 60 61 62 63 5 6 8 12 17 18 60 61 62 63 65 67 68 1 2 4 8 9 12 14 18 60 61 64 65 66
|
|
|
|
FREEON |
18.7.2019, 20:43
|
Journeyman
Сообщений: 365
Регистрация: 14.2.2017 Группа: Пользователи Наличность: 1316
Пользователь №: 18.346
Возраст: 25
|
Скрипт где мы делали подстановку значений вместо символов. А как реализовать загрузку данных из текстовика? где в файле: [1] Строка где будем делать замену(подстановку). вид ее: текст1 % text ^ text ? текст2 % text ^ text ? текст3 % text ^ text ?[2] текст подстановки вместо % числа из этой строки. вид ее: 1 2 3[3] текст подстановки вместо ^ текста из этой строки. вид ее: a b c [4] текст подстановки вместо ? текста из этой строки. вид ее: а б вКод log clear log mode compact load_array %arr C:\10.txt
//set %arr [1 ] текст1 % text ^ text ? . текст2 % text ^ text ? . текст3 % text ^ text ? . set $a %arr [1 1]
init_arr %sub "@" "^" "?" init_arr %b (1) %arr [2] //подстановка вместо % числа из этой строки init_arr %b (2) %arr [3] //подстановка вместо ^ текста из этой строки init_arr %b (3) %arr [4] //подстановка вместо ? текста из этой строки
for #i 1 size(%b) for #j 1 size(%b[]) set $b %sub[#i] // что ищем set $c %b[#i #j] // чем заменяем set $a string_replace ($a $b $c) // замена end_for end_for //log $a filedelete (C:\10.txt) // удалит файл write (C:\10.txt $a ) // создаст файл(перезапишет файл) //save_array $a C:\123.txt end_script
все разобрался... химичыу и нахимичыу
|
|
|
|
FREEON |
19.3.2020, 22:20
|
Journeyman
Сообщений: 365
Регистрация: 14.2.2017 Группа: Пользователи Наличность: 1316
Пользователь №: 18.346
Возраст: 25
|
Как на Lua заменять фразы, или «набор слов или слово в между этих скобок» или "набор слов или слово между этих скобок"? Код --lua -- Ищем фразы из файла и меняем на свои local file= io.open([[C:\1.txt]], "r") -- файл с текстом local result_file = io.open([[C:\2.txt]], "w") -- куда сохранить результат
local t={} t["UO Pilot"]="[url=https://forum.uokit.com/]Текст[/url]" t["«Перо феникса»"]="[url=https://forum.uokit.com/]«Текст Текст»[/url]" t['"Перо феникса 2"']="[B][url=https://forum.uokit.com/]Текст Текст 2[/url][/B]" t["Привет мир"]="Дарова пацаны!"
if file and result_file then -- если файлы открылись for v in file:lines() do result_file:write(string.gsub(v, '".+"', t).."\r") -- поиск и замена текста из таблицы 't' end file:close() result_file:close() else end
И как добиться того что бы сделать несколько замен в одном файле и затем сохранить результат всех правок в другой файл? Потому чо в текущем виде он 7 замен делает и толком ничего не обрабатывает и сохраняет по 7 дубликатов строк каждой строки. А выполнять отдельно в разных вкладках скрипта не целесобразно. Код --lua --Обробатываем файл local file= io.open([[C:\2.txt]], "r") -- файл с текстом local result_file = io.open([[C:\3.txt]], "w") -- куда сохранить результат if file and result_file then -- если файлы открылись for v in file:lines() do result_file:write(string.gsub(v, '<p style="text-align:center">', '').."\r") -- поиск и замена(удаление) текста --result_file:write(string.gsub(v, " ", "").."\r") --result_file:write(string.gsub(v, '< title="Увеличить изображение"', '').."\r") --result_file:write(string.gsub(v, " </p>", "").."\r") --result_file:write(string.gsub(v, "</p>", "").."\r") --result_file:write(string.gsub(v, '%<[Ii][Mm][Gg].[Aa][Ll][Tt]%="%S+"', '').."\r") --result_file:write(string.gsub(v, '<[Aa].[Hh][Rr][Ee][Ff]%=".+">', '').."\r") --result_file:write(string.gsub(v, 'style%="%S+.+">', '').."\r") --result_file:write(string.gsub(v, "<strong>", "[B]").."\r") --result_file:write(string.gsub(v, "</strong>", "[/B]").."\r") end
file:close() result_file:close() else end
|
|
|
|
FREEON |
20.3.2020, 6:55
|
Journeyman
Сообщений: 365
Регистрация: 14.2.2017 Группа: Пользователи Наличность: 1316
Пользователь №: 18.346
Возраст: 25
|
Цитата(cirus @ 20.3.2020, 3:00) Дайте пример текста и что должно быть после замены.
Читать файл не по строкам, а сразу весь:
Все ровно чо-то не получается у меня, но набрасал порядок действий. Я бы конечно не стал бы заморачивать, и сделал как знаю даже если это было бы на несколько вкладок скриптов... Но тут дело такое нужно автоматизировать действия одной девушке, ну и тут задача совсем другая, и от вида пилота с открытыми многочислеными вкладками она падает в обморок. А нужно свести к миниуму лишние и все действия скопировал вставил в файл, сохранил, запустил из одной вклакидки(хотя ей и это кажется сложным) открыл и забыл(редактируй как душе угодно). А стандартным языком пилота дело тоже труба т.к. крокозябры в тексте и смена кодировок выглядит чем-то сверхмагической технологией. описание действий
Код --lua local f = io.open([[C:\qwe.txt]], "rb") -- открыть файл для чтения local f2 = io.open([[C:\456.txt]], "wb") -- открыть файл для записи
if f and f2 then -- если файлы открылись local s = f:read("*a") -- прочитать весь файл f:close() -- закрыть файл
log (s) -- содержимое файла -- тут заменяем что нужно -- Сперва удаляем как обычный текст (действия которые можно делать "одновременно" в один прогон массива файла) </div> </script> </a> <p style="text-align:center"> <p> </p> -- Замена(по-прежнему в исходном первой прогонке массива) <strong> на [B] </strong> на [/B]
--удалить текст по маске по уже обработаному тексту массива(перезапись после каждой маски) <div.+> <script.+> <img.alt\="\S+" class="\S+" style=".+"> <a.href\="\S+" -- замена после предыдущих правок в тексте(массиве) -- удаляем и перезаписываем файл title="Увеличить изображение"> <img alt="" -- src=" на [img] ----меняем как обычный текст после замены перезаписываем массив ".$ на [/img] --замена по регулярному вырожению --конечная правка, удаляем символы > --замена текста на свой,например из таблицы(которой пока еще нет, но имет примерный вид): «Арена Клинков» меняем на [url=https://ссылка.com/как_и_любая_обычная_ссылка_на_ресурс/]«Арена Клинков»[/url] "Арена Клинков" меняем на [url=https://ссылка.com/как_и_любая_обычная_ссылка_на_ресурс/]«Арена Клинков»[/url] «Тайны старого замка» меняем на [url=https://ссылка.com/как_и_любая_обычная_ссылка_на_ресурс/]«Тайны старого замка»[/url] "Тайны старого замка" меняем на [url=https://ссылка.com/как_и_любая_обычная_ссылка_на_ресурс/]«Тайны старого замка»[/url] -- и далее в таком же духе f2:write(s) -- пишем в другой файл f2:close() -- закрыть файл end собрал для образца
1.txt ( 33,02 килобайт )
Кол-во скачиваний: 228
2.txt ( 9,78 килобайт )
Кол-во скачиваний: 250
|
|
|
|
cirus |
20.3.2020, 11:38
|
Elder
Сообщений: 3.480
Регистрация: 18.8.2014 Группа: Пользователи Наличность: 26746
Пользователь №: 16.971
Возраст: 29
|
Не забываем экранировать спецсимволы, т. е. ставить перед ними %. Принцип такой: код
Код --lua local f = io.open([[C:\1.txt]], "rb") -- открыть файл для чтения local f2 = io.open([[C:\2.txt]], "wb") -- открыть файл для записи
log "clear" log "mode compact" if f and f2 then -- если файлы открылись local s, n = f:read("*a") -- прочитать весь файл f:close() -- закрыть файл
-- тут заменяем что нужно
s, n = s:gsub('<%/div>', "") log("Количество замен: " .. n)
s, n = s:gsub('<%/script>', "") log("Количество замен: " .. n)
s, n = s:gsub('<p style="text%-align:center">', "") log("Количество замен: " .. n)
s, n = s:gsub('<strong>', "[B]") log("Количество замен: " .. n)
-- остальное аналогично
f2:write(s) -- пишем в другой файл f2:close() -- закрыть файл end Цитата удалить текст по маске по уже обработаному тексту массива(перезапись после каждой маски) <div.+> Нужно <div.->, иначе он почти весь текст удалит, потому что + это жадный поиск, захватывает максимальное количество символов. Т. е. при <div.-> увидит первый > и остановится, а при <div.+> остановится только на последнем >. Цитата перезапись после каждой маски И зачем? После всех изменений сохранить строку в файл и всё.
|
|
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|