Author Topic: поиск в текстовом файле  (Read 4746 times)

0 Members and 1 Guest are viewing this topic.

Aleksandr31

  • Зашел в гости
  • *
  • Posts: 19
    • View Profile
поиск в текстовом файле
« on: November 08, 2014, 02:32:27 AM »
Привет Всем Гуру Кликермана :). Столкнулся с такой задачкой, есть текстовый файл с огромным количеством строк. Надо выбрать только требуемые строки, содержащие ключевое слово. Их можно записать либо в новый файл (предпочтительно) или редактировать имеющийся. Скурил весь форум но что то подобного не нашёл, неужели никому не требовалось  поиск текста из текстового файла или если я пропустил, ткните носом пожалуйста, с кликером в принципе разобрался, но как осуществить поиск текста а не картинки, ну НЕ ВРУБАЮСЬ  :-\. Если подскажите как обработать тот же  текст сразу в буфере, ну это вообще будет просто СУПЕР. Заранее Спасибо. ::)

quant13

  • Активный участник
  • ***
  • Posts: 174
    • View Profile
Re: поиск в текстовом файле
« Reply #1 on: November 08, 2014, 07:12:59 AM »
1. делаем цикл по TFCOUNT ("file") - числовая функция; возвращает кол-во строк в файле
2. STRREADLN ("file", strn) - строковая функция; считывает строку из файла
3. STRPOS ("str", "substr") - числовая функция; возвращает позицию подстроки в строке
4. STRWRITELN ("file", "str", [rewrite]) - записывает строку в конец файла
Все взято из справки.язык сценариев.строки и файлы
если покопать там еще больше ухищрений сделать можно

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: поиск в текстовом файле
« Reply #2 on: November 08, 2014, 01:39:21 PM »
Учти что если в тексте есть символы "$# кликер поломает строку или выдаст ошибку

Входной файл должен иметь имя "input.txt", текст помещается в "output.txt"
Code: (clickermann) [Select]
$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

Aleksandr31

  • Зашел в гости
  • *
  • Posts: 19
    • View Profile
Re: поиск в текстовом файле
« Reply #3 on: November 09, 2014, 08:23:15 PM »
спасибо, но чего то не работает :-\.
$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

пример файла во вложении

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: поиск в текстовом файле
« Reply #4 on: November 09, 2014, 08:59:08 PM »
Написал же наличие этих символов "$# в тексте недопустимо. Удаляешь все кавычки из файла и все начинает работать.
Кликер как бы не предназначен тексты обрабатывать.


Johnny

  • Создатель
  • Герой форума
  • *
  • Posts: 593
    • View Profile
Re: поиск в текстовом файле
« Reply #5 on: November 09, 2014, 09:56:51 PM »
а еще можно немного ускорить скрипт, если вынести из шапки цикла функцию tfcount, иначе она будет вызываться каждую итерацию.
а поскольку размер файла в процессе не меняется, это только лишние операции. лучше вызвать ее один раз перед циклом и сохранить результат в переменную.

хотя работать будет конечно и так и так

Aleksandr31

  • Зашел в гости
  • *
  • Posts: 19
    • View Profile
Re: поиск в текстовом файле
« Reply #6 on: November 09, 2014, 11:09:58 PM »
у меня вот такая хрень вылазит
Ошибка при интерпретации строки: $str=
даже после удаления "
и даже уже скачал твой отредактированный файл txt, всё ровно тоже самое, что такое может быть?

Aleksandr31

  • Зашел в гости
  • *
  • Posts: 19
    • View Profile
Re: поиск в текстовом файле
« Reply #7 on: November 10, 2014, 01:34:24 AM »
Всё, обнаружил, что поиску мешают пустые строки, после их удаления всё заработало. А насчет поиска прямо в буфере, как я понимаю, не удалишь "" работать не будет, жаль. Может в следующей версии кликера появится полноценная возможность работы также и с текстом. Или может кликер можно подружить с uvFilesCorrector.
Спасибо за помощь.

ksa-nsk

  • Освоившийся
  • **
  • Posts: 55
    • View Profile
Re: поиск в текстовом файле
« Reply #8 on: November 10, 2014, 08:58:38 PM »
в кликере есть возможность запуска стороннего приложения, если есть желание, можешь скачать себе куда-нибудь в папку редактор "sed", у него возможности огромные, причём, если не ошибаюсь, он в состоянии обрабатывать огромные текстовые файлы перебирая построчно и без тормозов. Только там надо немного приловчиться к регулярным выражениям, и свой текст можешь колбасить вдоль-поперек - можешь сразу в отдельный файл сбросить из всего тества только нужные тебе строки, а точнее, части из этих строк, а потом делай своё злодейство просто перебирая строки. У меня sed к 1С так прикручен, доволен на все сто...