Сagrep
(исходным аппроксимативным grep
, а не с tre
), можно сделать
agrep -ld '$x' 'pattern1;pattern2;pattern3'
Там, где мы используем регулярное выражение, которое не может соответствовать ($x
, что-то после конца )в качестве разделителя.
(используйте find
или zsh
рекурсивные подстановочные знаки для рекурсивного поиска во всех файлах в каталоге ).
Обратите внимание, что шаблоны сопоставляются со всем содержимым файлов, а не с каждой строкой каждого файла.
Вы можете написать это с помощью gawk:
PATTERNS='pattern1;pattern2;pattern3' gawk -e '
BEGIN{n = split(ENVIRON["PATTERNS"], a, ";")}
BEGINFILE{for (i in a) p[a[i]]; found = 0}
{
for (i in p)
if ($0 ~ i) {
if (++found == n) {print FILENAME; nextfile}
delete p[i]
}
}' -E /dev/null file1 file2...
(хотя это довольно медленно ).
Оказалось, что docker compose создавал плохую сеть. Я не знаю, почему и как он начал это делать, но после его удаления все снова заработало.