Помощь - Поиск - Пользователи - Календарь
Полная версия: Найти текст в документе и показать всю строку
UoKit.com Форумы > Кликер > UO Pilot
Страницы: 1, 2, 3, 4
dontail
Добрый день форумчане, надеюсь мне поможете)) Есть документ, в нем 600 строк и нужно найти в нем одно слово, может и повторяться. Мне нужно чтобы выводились все строки найденные с этим словом. Уже 2-ой день пыхчу и не могу найти(
dron4938
Цитата(dontail @ 1.4.2018, 15:12) *

Добрый день форумчане, надеюсь мне поможете)) Есть документ, в нем 600 строк и нужно найти в нем одно слово, может и повторяться. Мне нужно чтобы выводились все строки найденные с этим словом. Уже 2-ой день пыхчу и не могу найти(

Notepad ++ же)))
dontail
Цитата(dron4938 @ 1.4.2018, 18:16) *

Notepad ++ же)))

у меня через 9 дней экзамен) нужно скрытно чтоб искал

load_array %arr C:\текст\55.txt
set $arrForIf %arr [1] ////// как я понял - здесь он берет только первую строку, мне нужно чтоб охватывал все 600+ и показывал все в которых нашел поочередно.
if 1 >= $arrForIf
msg !!!
end_if
(один из вариантов которые я пытался. еще с "indexof" пытался, но не получается)
dron4938
Так сойдет?

Скачать архив, распаковать, запустить файл "Поиск строк с определенными словами.bat"
Создастся файл result.txt с найденными строками
===================================

параметры:
FINDSTR /L "dontail dron4938" "text.txt" > "result.txt"

dontail dron4938 - вместо этого свои слова которые надо искать
"text.txt" - имя файла в котором надо искать
"result.txt" - имя файла который создастся после поиска с найденными строками
dontail
Цитата(dron4938 @ 1.4.2018, 19:10) *

Так сойдет?

FINDSTR /L "dontail dron4938" "text.txt" > "result.txt"

dontail dron4938 - вместо этого свои слова которые надо искать
"text.txt" - имя файла в котором надо искать
"result.txt" - имя файла который создастся после поиска с найденными строками

Знаешь, ты мне поддал новую идею. Спасибо тебе. Теперь только реализовать осталось вроде)))
dontail
теперь застрял на том - как удалить в батнике прошлые данные чтобы ввести новый поиск)?
dron4938
Цитата(dontail @ 1.4.2018, 16:34) *

теперь застрял на том - как удалить в батнике прошлые данные чтобы ввести новый поиск)?

Код
write (C:\123abc.bat FINDSTR /L "dontail dron4938" "text.txt" > "result.txt")
//создастся файл bat со строкой (FINDSTR /L "dontail dron4938" "text.txt" > "result.txt")
end_script
dontail
Цитата(dron4938 @ 1.4.2018, 19:46) *

Код
write (C:\123abc.bat FINDSTR /L "dontail dron4938" "text.txt" > "result.txt")
//создастся файл bat со строкой (FINDSTR /L "dontail dron4938" "text.txt" > "result.txt")
end_script


Есть вариант не создавать новый, а менять его?

Хотя это можно решить удалением файла, а затем его снова создавать. Спасибо еще раз за помощь)
dron4938
Цитата(dontail @ 1.4.2018, 17:00) *

Есть вариант не создавать новый, а менять его?

Хотя это можно решить удалением файла, а затем его снова создавать. Спасибо еще раз за помощь)

одинаковое имя файла, просто заменит старый
dontail
Цитата(dron4938 @ 1.4.2018, 20:04) *

одинаковое имя файла, просто заменит старый

Он не заменяет, а дописывает еще текст поверх старого
dron4938
Цитата(dontail @ 1.4.2018, 17:06) *

Он не заменяет, а дописывает еще текст поверх старого

Код
filedelete (C:\123abc.bat) // удалит файл
write (C:\123abc.bat FINDSTR /L "dontail dron4938" "text.txt" > "result.txt") // создаст файл
wait 200
exec C:\123abc.bat // запустит файл
end_script
DarkMaster
Код
set linedelay 0
set $sub ywf // указываем ваше слово

load_array %arr text.txt
set #sizeArr size(%arr)
for #i 1 #sizeArr 1
    set #pos posEx($sub, %arr[#i])
    if  #pos > 0
        log %arr[#i]
    end_if
end_for


Не запускал, но смысл примерно такой.
dontail
Цитата(DarkMaster @ 1.4.2018, 21:44) *

Код
set linedelay 0
set $sub ywf // указываем ваше слово

load_array %arr text.txt
set #sizeArr size(%arr)
for #i 1 #sizeArr 1
    set #pos posEx($sub, %arr[#i])
    if  #pos > 0
        log %arr[#i]
    end_if
end_for


Не запускал, но смысл примерно такой.

Отлично работает, а можно выставить между сообщениями время? я хочу его через Hint выводить, а так он разом выводит все

Цитата(dontail @ 1.4.2018, 22:17) *

Отлично работает, а можно выставить между сообщениями время? я хочу его через Hint выводить, а так он разом выводит все

я плыву уже))) 2-ой день скрипт делаю и бошка не варит)
Код
set linedelay 0
set $sub ywf // указываем ваше слово

load_array %arr text.txt
set #sizeArr size(%arr)
for #i 1 #sizeArr 1
    set #pos posEx($sub, %arr[#i])
    if  #pos > 0
        hint %arr[#i]
wait 5s
    end_if
if 853 >= %arr[#i]    ///// 853 последняя пустая строка
    end_script
    end_if
end_for

Спасибо большое ребят, теперь он полностью закончен)
dron4938
Код
if #i == 853
DarkMaster
Цитата
if 853 >= %arr[#i] ///// 853 последняя пустая строка
end_script
end_if

выкинуть
после
end_for
поставить:
end_script
dontail
еще такой вопрос - как сохранить в "горячих клавишах" пуск/стоп скрипта, чтобы при переносе на другой комп он сохранялся
cirus
Все настройки хранятся в uopilot.ini. Т. е. на другой комп надо перекинуть этот файл.
dontail
Цитата(cirus @ 1.4.2018, 23:31) *

Все настройки хранятся в uopilot.ini. Т. е. на другой комп надо перекинуть этот файл.

А где именно и что менять?)
cirus
Цитата
А где именно и что менять?)

В пилоте, вкладка 'Ещё', кнопка 'Edit HotKeys'.
dontail
Цитата(cirus @ 2.4.2018, 0:05) *

В пилоте, вкладка 'Ещё', кнопка 'Edit HotKeys'.

При перезагрузке программы она не сохраняется

UPD нашел в настройках скрипта - OTHER - сохранять настройки при выходе
dontail
Кто нибудь может подсказать - можно ли создать текстовый документ размером 600+ строк? Просто сейчас не дома, проверить возможности нет. Заранее спасибо)
cirus
Код
for #i 1 600
    set %a[#i] Строка номер #i
end_for
save_array %a C:\textfile.txt
end_script
dontail
Цитата(cirus @ 2.4.2018, 16:33) *

Код
for #i 1 600
    set %a[#i] Строка номер #i
end_for
save_array %a C:\textfile.txt
end_script


не совсем понял
DarkMaster
Что именно не понятно? Вы просили создание документа из 600+ строк - вам его создали.
dontail
Цитата(DarkMaster @ 2.4.2018, 21:24) *

Что именно не понятно? Вы просили создание документа из 600+ строк - вам его создали.

как можно с этим кодом создать текст на 600 строк(все 600 строк разные)

Код
set %arr [1]вопрос 1, ответ 1
set %arr [2]вопрос 2, ответ 2
set %arr [3]вопрос 3, ответ 3
set %arr [4]вопрос 3, ответ 4
....
set %arr [600]вопрос 600, ответ 600
save_array %arr C:\вопросики\123abc.txt
end_script

сделал что то наподобие этого, есть ли варианты как нибудь упростить и сделать его быстрее?
cirus
Вопросы и ответы пилот должен придумать? smile.gif
DarkMaster
Цитата
Вопросы и ответы пилот должен придумать? smile.gif

Ща чего-нибудь на генериурем) Может заодно пару фундаментальных проблем ии решим =)
dontail
Всем большое спасибо за помощь и за ваше терпение)
dron4938
есть 2 текстовых файла.

1ый содержит такие строки:
Код
$*Game-EBoneDeformPart_CalfCircumference-Customizin=
$*Game-EBoneDeformPart_FootSize-Customizin=
$*Game-EBoneDeformPart_BodyCircumference-Customizin=
$*Game-EBoneDeformPart_Height-Customizin=
$*Game-Error_NPGAMEMON_ERROR_EXIST-Error=
$*Game-Error_NPGAMEMON_ERROR_NPSCAN-Error=
$*Game-Error_NPGAMEMON_ERROR_INIT-Error=


2ой содержит такие строки:
Код
Eyebrow Arch Horizontal Position
Eyebrow Tail Vertical Position
Eyebrow Curvature
Nose Vertical Position
Nose Size
Nose Projection
Nose Bridge Shape


нужно объединить оба файла, добавив в 1ый после знаков = строки из 2ого файла.

должно получиться так:
Код
$*Game-EBoneDeformPart_CalfCircumference-Customizin=Eyebrow Arch Horizontal Position
$*Game-EBoneDeformPart_FootSize-Customizin=Eyebrow Tail Vertical Position
$*Game-EBoneDeformPart_BodyCircumference-Customizin=Eyebrow Curvature
$*Game-EBoneDeformPart_Height-Customizin=Nose Vertical Position
$*Game-Error_NPGAMEMON_ERROR_EXIST-Error=Nose Size
$*Game-Error_NPGAMEMON_ERROR_NPSCAN-Error=Nose Projection
$*Game-Error_NPGAMEMON_ERROR_INIT-Error=Nose Bridge Shape


как реализовать такое?
cirus
Код
load_array %a C:\Users\abc\Desktop\222.txt
load_array %b C:\Users\abc\Desktop\333.txt

for #i 1 size(%a)
    set %c [#i] %a[#i]%b[#i]
end_for
save_array %c C:\Users\abc\Desktop\444.txt
end_script
dron4938
Цитата(cirus @ 31.5.2018, 12:54) *

Код
load_array %a C:\Users\abc\Desktop\222.txt
load_array %b C:\Users\abc\Desktop\333.txt

for #i 1 size(%a)
    set %c [#i] %a[#i]%b[#i]
end_for
save_array %c C:\Users\abc\Desktop\444.txt
end_script


Спасибо
DarkMaster
Из-за спецсимволов могут быть порблемы. Чтобы их избежать можно сделать так:
Код
--lua
log"clear"
local first  = io.open([[d:\1.txt]], "r")
local second = io.open([[d:\2.txt]], "r")
local result_file = io.open([[d:\result.txt]], "wb")

first_part={}
second_part={}

for v in first:lines() do
    first_part[#first_part + 1] = v
end

for v in second:lines() do
    second_part[#second_part + 1] = v
end

local result = ""

for i = 1, #first_part do
    result = result..first_part[i]..second_part[i].."\r\n"
end

result_file:write(result)
result_file:close()
dron4938
Цитата(cirus @ 31.5.2018, 12:54) *

Код
load_array %a C:\Users\abc\Desktop\222.txt
load_array %b C:\Users\abc\Desktop\333.txt

for #i 1 size(%a)
    set %c [#i] %a[#i]%b[#i]
end_for
save_array %c C:\Users\abc\Desktop\444.txt
end_script


Файлы состоят из 25тысяч строк. Запустил скрипт, работает уже минут 10. Результата стоит ждать? Или это слишком большие массивы?

Цитата(DarkMaster @ 31.5.2018, 13:07) *

Из-за спецсимволов могут быть порблемы. Чтобы их избежать можно сделать так:
Код
--lua
log"clear"
local first  = io.open([[d:\1.txt]], "r")
local second = io.open([[d:\2.txt]], "r")
local result_file = io.open([[d:\result.txt]], "wb")

first_part={}
second_part={}

for v in first:lines() do
    first_part[#first_part + 1] = v
end

for v in second:lines() do
    second_part[#second_part + 1] = v
end

local result = ""

for i = 1, #first_part do
    result = result..first_part[i]..second_part[i].."\r\n"
end

result_file:write(result)
result_file:close()



спс, сработало за 5 сек
DarkMaster
Цитата

Файлы состоят из 25тысяч строк. Запустил скрипт, работает уже минут 10. Результата стоит ждать? Или это слишком большие массивы?

Цитата
спс, сработало за 5 сек

Это называтся новый и старый скриптовый движок в сравнении =)
dron4938
как удалить все знаки = из текста файла, а затем следующим действием выставить знаки = в начале каждой строки?

Код
=Горящие Пески-Песчаный =Причал
Горящие Пески-Азуресанд
=Курия =- Fairy Song Ferry Inn
=Курия-Трущобы
=Курия -= Fairy Song Ferry Inn
=Курия-Еловая Поляна
Отрубями =Лес - Lupuscana
=Bellops-Daidan =Wanderers
=Bellops - Экспедиция Torenton


должно стать:
Код
=Горящие Пески-Песчаный Причал
=Горящие Пески-Азуресанд
=Курия - Fairy Song Ferry Inn
=Курия-Трущобы
=Курия - Fairy Song Ferry Inn
=Курия-Еловая Поляна
=Отрубями Лес - Lupuscana
=Bellops-Daidan Wanderers
=Bellops - Экспедиция Torenton
DarkMaster
Код
--lua
log"clear"
local first  = io.open([[d:\1.txt]], "r")
local result_file = io.open([[d:\result.txt]], "wb")

first_part={}
second_part={}

for v in first:lines() do
    result_file:write("=" .. string.gsub(v, "=", "").."\r\n")
end

result_file:close()
dron4938
Цитата(DarkMaster @ 31.5.2018, 19:10) *

Код
--lua
log"clear"
local first  = io.open([[d:\1.txt]], "r")
local result_file = io.open([[d:\result.txt]], "wb")

first_part={}
second_part={}

for v in first:lines() do
    result_file:write("=" .. string.gsub(v, "=", "").."\r\n")
end

result_file:close()


СПАСИБ
dron4938
нужен скрипт автозамены сложных наборов текстов в документе.

пример: В тексте есть много таких кракозябров, надо чтобы они автоматом заменились на заданное значение, например </I> пробелы должны учитываться.

< / I>
</Я>
< /I >
</I >
< /Я >
</Я >
< /Я>
</Я>
</ Я>
DarkMaster
было-стало приведите пример.
DarkMaster
Код
--lua
log"clear"
local first  = io.open([[d:\1.txt]], "r")
local result_file = io.open([[d:\result.txt]], "wb")

first_part={}

for v in first:lines() do
    result_file:write(string.gsub(v, "(%< *%/ *)([a-zA-Zа-яА-Я])( *%>)", "%1I%3").."\r\n")
end

first:close()
result_file:close()
dron4938
Цитата(DarkMaster @ 1.6.2018, 22:54) *

Код
--lua
log"clear"
local first  = io.open([[d:\1.txt]], "r")
local result_file = io.open([[d:\result.txt]], "wb")

first_part={}

for v in first:lines() do
    result_file:write(string.gsub(v, "(%< *%/ *)([a-zA-Zа-яА-Я])( *%>)", "%1I%3").."\r\n")
end

first:close()
result_file:close()


не работает

вот пример:
Код
[AccountInfo]
$*FixedChargeAdvInfo-green-local_name=<font size='20'><i>Game</ i> Прем</font>
$*FixedChargeAdvInfo-blue-local_name=<font size='20'><i>Game</я> Прем</font>
$*FixedChargeAdvInfo-purple-local_name=<font size='20'><i>Game< /i> Прем</font>


должно стать так:
Код
[AccountInfo]
$*FixedChargeAdvInfo-green-local_name=<font size='20'><i>Game</i> Прем</font>
$*FixedChargeAdvInfo-blue-local_name=<font size='20'><i>Game</i> Прем</font>
$*FixedChargeAdvInfo-purple-local_name=<font size='20'><i>Game</i> Прем</font>


тобеж нужна функция как в нотепаде замена текста, там это отлично работает.
т.е. там можно сделать единичную замену текста например </я> заменить </i> во всем документе.
а нужно чтобы все заданные значения </я> </ i> < /i> </I> заменялись на </i> во всем документе
DarkMaster
Т.е. пробелы нужно убрать? А я их наоборот сохранял всеми силами) Ща

Код
--lua
log"clear"
local first  = io.open([[d:\1.txt]], "r")
local result_file = io.open([[d:\result.txt]], "wb")

first_part={}

for v in first:lines() do
    result_file:write(string.gsub(v, "(%<) *(%/) *([яЯiI]) *(%>)", "%1%2i%4").."\r\n")
end

first:close()
result_file:close()
dron4938
Цитата(DarkMaster @ 2.6.2018, 22:09) *

Т.е. пробелы нужно убрать? А я их наоборот сохранял всеми силами) Ща

Код
--lua
log"clear"
local first  = io.open([[d:\1.txt]], "r")
local result_file = io.open([[d:\result.txt]], "wb")

first_part={}

for v in first:lines() do
    result_file:write(string.gsub(v, "(%<) *(%/) *([яЯiI]) *(%>)", "%1%2i%4").."\r\n")
end

first:close()
result_file:close()


не робит.в результате чистый документ выходит
cirus
Цитата
не робит.в результате чистый документ выходит

Всё работает.
dron4938
Цитата(cirus @ 2.6.2018, 22:18) *

Всё работает.

Изображение

пример проще:

Код
тумба
стол
стул
ящик
чемодан
рыба
азбука


как в этом тексте заменить слово чемодан на люстра
cirus
Цитата
как в этом тексте заменить слово чемодан на люстра

Код
--lua
log"clear"
local first  = io.open([[d:\1.txt]], "r")
local result_file = io.open([[d:\result.txt]], "wb")

first_part={}

for v in first:lines() do
    result_file:write(string.gsub(v, "чемодан", "люстра").."\r\n")
end

first:close()
result_file:close()
dron4938
Цитата(cirus @ 2.6.2018, 22:51) *

Код
--lua
log"clear"
local first  = io.open([[d:\1.txt]], "r")
local result_file = io.open([[d:\result.txt]], "wb")

first_part={}

for v in first:lines() do
    result_file:write(string.gsub(v, "чемодан", "люстра").."\r\n")
end

first:close()
result_file:close()


а как 2 слова чемодан и азбука заменить на люстра
dron4938
все заработало, проблема в юникоде файла была) Я файл не с нуля создавал, а расширение просто поменял на тхт.
Создал тхт с нуля и заработало, спасибо
cirus
Цитата
а как 2 слова чемодан и азбука заменить на люстра

Код
--lua
log"clear"
local first  = io.open([[d:\1.txt]], "r")
local result_file = io.open([[d:\result.txt]], "wb")

first_part={}

t={["чемодан"]="люстра", ["азбука"]="букварь"}  -- чемодан заменить на люстру, азбуку на букварь

for v in first:lines() do
--    log (v)
    result_file:write(string.gsub(v, "[%A%a]+", t).."\r\n")
end

first:close()
result_file:close()
dron4938
Код
--lua
log"clear"
local first  = io.open([[d:\1.txt]], "r")
local result_file = io.open([[d:\result.txt]], "wb")

first_part={}

t={["Game"]="Game2", ["Прем"]="Прем2"}  --

for v in first:lines() do
--    log (v)
    result_file:write(string.gsub(v, "[%A%a%/]+", t).."\r\n")
end

first:close()
result_file:close()


почему в этом тексте не меняет?
Код
[AccountInfo]
$*FixedChargeAdvInfo-green-local_name=<font size='20'><i>Game</ i> Прем</font>
$*FixedChargeAdvInfo-blue-local_name=<font size='20'><i>Game</я> Прем</font>
$*FixedChargeAdvInfo-purple-local_name=<font size='20'><i>Game< /i> Прем</font>
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2024 Invision Power Services, Inc.