Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: как кодом проверить вхождение текстовой строки в текстовый файл ?  (Прочитано 987 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн alex_dorin

  • Автор темы
  • Любитель
  • *
  • Сообщений: 64
    • Просмотр профиля
Здравствуйте !
  Как кодом проверить вхождение текстовой строки в текстовый файл ?

Оффлайн spk-ubuntu

  • Активист
  • *
  • Сообщений: 502
    • Просмотр профиля
код на каком языке программирования?
например, в терминале:
grep 'что нужно найти' file.txt

Оффлайн alex_dorin

  • Автор темы
  • Любитель
  • *
  • Сообщений: 64
    • Просмотр профиля
в командном файле  1.bat с таким содержимым :

#!/bin/sh
sync
echo 3 | sudo tee /proc/sys/vm/drop_caches

for i in *.TPTP; do ./metis --time-limit 3600  $i >> logout.log; done


проверить наличие в файле logout.log  строки текста c cодержимым "Proof found" ,
и, если обнаружено, то выполнить другие команды, иначе выдать сообщение на экран терминала и завершить работу.




Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Вам же написали
Код: (bash) [Выделить]
if ! grep -qFm 1 'Proof found' logout.log
then
    echo "Error\! String \"Proof found\" there is not in file logout.log"
    exit 1
fi
другие команды
« Последнее редактирование: 01 Июля 2015, 11:21:50 от Azure »
В Linux можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн alex_dorin

  • Автор темы
  • Любитель
  • *
  • Сообщений: 64
    • Просмотр профиля
Так ошибки не будет ?
#!/bin/sh
sync
echo 3 | sudo tee /proc/sys/vm/drop_caches

for i in *.TPTP; do ./metis --time-limit 3600  $i >> logout.log;
    if  grep -qFm 1 'Proof found' logout.log
    then
        echo "Доказательство найдено"
        exit 1
    fi
done


Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
  • Вам это зачем-то нужно делать проверку для каждого файла с расширением .TPTP, потому как логичнее делать проверку 1 раз(не в цикле).
  • Вы перевернули логику «если обнаружено, то выполнить другие команды» на «выйти», это осознанно?
В Linux можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн alex_dorin

  • Автор темы
  • Любитель
  • *
  • Сообщений: 64
    • Просмотр профиля
да, такая была цель, найдя доказательство, прекратить обработку файлов *.TPTP програмой metis.

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Нецелесообразно парсить каждый раз весь logout.log
Код: (bash) [Выделить]
for i in *.TPTP
do
    ./metis --time-limit 3600  $i |
    tee -a logout.log |
    grep -qFm 1 'Proof found' &&
    {
        echo "Доказательство найдено"
        exit
    }
done
В Linux можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн alex_dorin

  • Автор темы
  • Любитель
  • *
  • Сообщений: 64
    • Просмотр профиля

 

Страница сгенерирована за 0.015 секунд. Запросов: 20.