April 13 2022, 08:52#

regex - How to find patterns across multiple lines using grep? - Stack Overflow

Lien : https://stackoverflow.com/questions/2686147/how-to-find-patterns-across-multiple-lines-using-grep/25180652#25180652

Cas d'école : je cherche à savoir si la compression des logs est activée dans logrotate.conf

Voici ce que je recherche :

# uncomment this if you want your log files compressed
compress

Solution : utilisation de PCRE (Perl-Compatible Regular Expressions) avec grep

grep -Pzl '(?s)# uncomment this if you want your log files compressed.*\ncompress' /etc/logrotate.conf

-P pour utiliser PCRE -z pour traiter l'entrée sur plusieurs lignes, chacune se terminant par un zéro à la place d'une nouvelle ligne -l liste uniquement les fichiers correspondants (?s) activer PCRE_DOTALL, ce qui veut dire qu'un point . correspond à n'importe quel caractère ou nouvelle ligne

Tags : linux log logrotate grep perl