Ваши предположения немного ошибочны. Awk - это инструмент, предназначенный для работы с предопределенным набором файлов. Так что он не имеет никаких знаний о рекурсивной обработке файлов .
В одном файле можно указать:
awk '/regex/' file1 file2
, и при этом будут напечатаны все строки файла file1 и file2, которые соответствуют regex
. Это, однако, может быть не тем, что вам нужно, поскольку оно не дает никакой информации о том, какая строка принадлежит какому файлу, в отличие от grep -E 'regex' file1 file2
. Чтобы достичь этого, вам уже нужно начать добавлять вещи, делая ваш awk немного менее удобным:
awk '/regex/{print FILENAME,":",$0}' file1 file2
Если вы хотите использовать рекурсив, вам нужно будет использовать find
для этого:
find . -type f -print0 | xargs -0 awk '/regex/{print FILENAME":", $0}'