Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Aleksandr31 on November 08, 2014, 02:32:27 AM
-
Привет Всем Гуру Кликермана :). Столкнулся с такой задачкой, есть текстовый файл с огромным количеством строк. Надо выбрать только требуемые строки, содержащие ключевое слово. Их можно записать либо в новый файл (предпочтительно) или редактировать имеющийся. Скурил весь форум но что то подобного не нашёл, неужели никому не требовалось поиск текста из текстового файла или если я пропустил, ткните носом пожалуйста, с кликером в принципе разобрался, но как осуществить поиск текста а не картинки, ну НЕ ВРУБАЮСЬ :-\. Если подскажите как обработать тот же текст сразу в буфере, ну это вообще будет просто СУПЕР. Заранее Спасибо. ::)
-
1. делаем цикл по TFCOUNT ("file") - числовая функция; возвращает кол-во строк в файле
2. STRREADLN ("file", strn) - строковая функция; считывает строку из файла
3. STRPOS ("str", "substr") - числовая функция; возвращает позицию подстроки в строке
4. STRWRITELN ("file", "str", [rewrite]) - записывает строку в конец файла
Все взято из справки.язык сценариев.строки и файлы
если покопать там еще больше ухищрений сделать можно
-
Учти что если в тексте есть символы "$# кликер поломает строку или выдаст ошибку
Входной файл должен иметь имя "input.txt", текст помещается в "output.txt"
$str2 = "слово" // слово для поиска
FOR($a=1,$a<TFCOUNT ("input.txt"))
$str = TFREAD ("input.txt", $a)
IF(STRPOS($str, $str2) > 0)
TFWRITE("output.txt", $str)
END_IF
END_CYC
HALT
-
спасибо, но чего то не работает :-\.
$str2 = "Город" // слово для поиска
FOR($a=1,$a<TFCOUNT ("skan.txt"))
$str = TFREAD ("skan.txt", $a)
IF(STRPOS($str, $str2) > 0)
TFWRITE("output.txt", $str)
END_IF
END_CYC
HALT
пример файла во вложении
-
Написал же наличие этих символов "$# в тексте недопустимо. Удаляешь все кавычки из файла и все начинает работать.
Кликер как бы не предназначен тексты обрабатывать.
-
а еще можно немного ускорить скрипт, если вынести из шапки цикла функцию tfcount, иначе она будет вызываться каждую итерацию.
а поскольку размер файла в процессе не меняется, это только лишние операции. лучше вызвать ее один раз перед циклом и сохранить результат в переменную.
хотя работать будет конечно и так и так
-
у меня вот такая хрень вылазит
Ошибка при интерпретации строки: $str=
даже после удаления "
и даже уже скачал твой отредактированный файл txt, всё ровно тоже самое, что такое может быть?
-
Всё, обнаружил, что поиску мешают пустые строки, после их удаления всё заработало. А насчет поиска прямо в буфере, как я понимаю, не удалишь "" работать не будет, жаль. Может в следующей версии кликера появится полноценная возможность работы также и с текстом. Или может кликер можно подружить с uvFilesCorrector.
Спасибо за помощь.
-
в кликере есть возможность запуска стороннего приложения, если есть желание, можешь скачать себе куда-нибудь в папку редактор "sed", у него возможности огромные, причём, если не ошибаюсь, он в состоянии обрабатывать огромные текстовые файлы перебирая построчно и без тормозов. Только там надо немного приловчиться к регулярным выражениям, и свой текст можешь колбасить вдоль-поперек - можешь сразу в отдельный файл сбросить из всего тества только нужные тебе строки, а точнее, части из этих строк, а потом делай своё злодейство просто перебирая строки. У меня sed к 1С так прикручен, доволен на все сто...