Просто используйте perl
и пропустите файл целиком:
nginx -V 2>&1 | perl -0ne 'print "found\n" if m#nginx/1.9.10# &&
/ngx_pagespeed-release-1.9.32.10/ &&
/openssl-1.0.2f/ && /modsecurity-2.9.0/'
Также обратите внимание, что у вас есть некоторые скрытые символы в тексте вашего вопроса. Я не знаю, есть ли они в вашей фактической строке поиска, но если они есть, они вызовут у вас проблемы. Если я скопирую modsecurity-2.9. 0
из вашего вопроса и передам его через od -c
, я получу:
$ echo modsecurity-2.9.0 | od -c
0000000 m o d s e c u r i t y - 2 . 9 .
0000020 342 200 214 342 200 213 0 \n
0000030
В частности, согласно uniprops
], у вас есть 6 вхождений U + FFFD ‹�› \ N {REPLACEMENT CHARACTER} между последним .
и 0
.
apt
поддерживает локальный список пакетов; именно так он «узнает», какие пакеты доступны, их зависимости и т. д. apt update
обновляет эти списки пакетов, извлекая их из репозиториев; он не обновляет ни один пакет.
Вот что такое кеш :это локальный кеш информации о пакете, доступной из репозиториев, настроенных в системе. apt
принимает все решения на основе этого кеша, поэтому его необходимо поддерживать в актуальном состоянии с -по -. Устаревший кеш может привести apt
к пропущенным обновлениям или полной невозможности установки пакета (, поскольку требуемая версия больше недоступна в репозиториях ).
update_cache=yes
указывает модулю Ansible apt
обновить кэши перед применением любых необходимых изменений (, если таковые имеются ).