GREP: Найти большую строку в маленькой строке

Если ничего из вышеперечисленного не сработало для вас. У меня была такая же проблема на 64-разрядной машине linux mint. Единственное, что мне помогло, это скрипт python :

import sys, select, subprocess
while True:
    p = subprocess.Popen(['xset', 'dpms', 'force', 'off'], 
        stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    if sys.stdin in select.select([sys.stdin], [], [], 0)[0]:
        break
1
31.08.2018, 12:51
2 ответа

У вас есть файл с шаблонами. grepможет считывать паттерны с опцией -f. Если вы хотите проверить, соответствует ли строка $inputшаблону в patterns.txt, вы можете сделать

printf '%s\n' "$input" |
if grep -q -f patterns.txt; then
    echo 'matches'
else
    echo 'does not match'
fi

Это запустит grepсодержимое строки с шаблонами в patterns.txt. В bashвы могли бы вместо этого использовать здесь -строку:

if grep -q -f patterns.txt <<<"$input"; then
    echo 'matches'
else
    echo 'does not match'
fi

-qостанавливает grepпроизводство вывода (нас интересует только статус выхода ).

Если шаблоны являются фиксированными строками (, а не регулярными выражениями ), используйте -Fс grepв дополнение к другим флагам(grep -qF -f...).

1
27.01.2020, 23:42

Использование bash, cutиgrep:

read -p "Hey user, input something: " $n
printf "Match "
grep -m 1 -q -f <(cut -d, -f2 file) <<< "$n" || printf "not "
printf "found.\n"

Примечания:

  • Невозможно искать более длинную строку в более короткой, но на самом деле речь идет о том, чтобы найти, соответствуют ли более короткие строки в файле более длинной строке.
  • cutиспользуется для извлечения среднего поля из файла
  • grepищет это среднее поле в строке пользовательского ввода.
  • printfдает некоторую обратную связь.
0
27.01.2020, 23:42

Теги

Похожие вопросы