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

У меня есть файл со строкой «TEST» в нем (без кавычек). Как я могу запустить команду, чтобы проверить, находится ли эта строка в этом файле и вывести другой результат в зависимости от того, находится ли строка в файле

0
задан 16 July 2017 в 15:43

4 ответа

Один общий способ - использовать статус выхода команды grep

grep -qF TEST file && <command>

Пример. заданный

$ cat > somefile This file contains TEST string $ cat > otherfile This file doesn't contain the string

, тогда

$ grep -qF TEST somefile && echo "Do something" Do something $ grep -qF TEST otherfile && echo "Do something" $
2
ответ дан 18 July 2018 в 10:12

Я понял это

if grep -q "$STRING" "$FILENAME"; then echo "Yes" ; else echo "No" ; fi

Работал для меня

2
ответ дан 18 July 2018 в 10:12

Один общий способ - использовать статус выхода команды grep

grep -qF TEST file && <command>

Пример. заданный

$ cat > somefile This file contains TEST string $ cat > otherfile This file doesn't contain the string

, тогда

$ grep -qF TEST somefile && echo "Do something" Do something $ grep -qF TEST otherfile && echo "Do something" $
2
ответ дан 24 July 2018 в 19:31
  • 1
    Как бы вы сделали эту команду, я еще больше запутался – 9291Sam 16 July 2017 в 15:57
  • 2
    @ 9291Sam, если вы хотите получить более конкретный ответ, пожалуйста, сделайте свой вопрос более конкретным – steeldriver 16 July 2017 в 15:59
  • 3
    я понял – 9291Sam 16 July 2017 в 16:01

Я понял это

if grep -q "$STRING" "$FILENAME"; then echo "Yes" ; else echo "No" ; fi

Работал для меня

2
ответ дан 24 July 2018 в 19:31
  • 1
    Обратите внимание, что это будет рассматривать $STRING как шаблон basic regular expression - который может дать неожиданные результаты, если он содержит специальные символы, такие как . – steeldriver 16 July 2017 в 16:52

Другие вопросы по тегам:

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