Всем привет,
Подскажите как составить команду GREP для следующей ситуации:
В каталоге есть три файла, в них есть текст:
а1 - денис
а2 - денис, максим
а3 - максим
Как написать команду, чтобы найти имя файла где встречается в самом файле два имени денис, максим (эти имена могут находится в разных строках, в разной последовательности)
Т.е по идеи вывести должен только файл а2.
1. grep умеет читать ТОЛЬКО строки !! и не умеет читать с переносом, так что содержимое должно быть именно в 1 строке. grep -rlE \(денис.*максим\|максим.*денис\) .
-r рекурсивно
-l имя файла а не содержимое
-E регулярки
Но в товоем случае греп сильно хорошо подойдет поскольку тебе нужно искать во всем файле, да и оптимальным такой вариант не назвать. Так работать будет ! grep -l денис *$(grep -rl максим)
Так будет по реще хотя прийдется строить два цикла.
В первом мы ищем имена файлов в которых есть максим
создав массив файлов мы передаем его грепу денис и ищем опять еж имена файлов.