Você pode se beneficiar do GNU grep com suas regexes Perl também. Isto irá mostrar a linha contendo a string main () em qualquer lugar nas 10 primeiras linhas do arquivo de entrada.
A opção -z
permite que o arquivo seja sugado e tratado como uma grande cadeia (contanto que não contenha caracteres NUL) na qual o grep deve operar. O -P
ativa o modo Perl do grep, -o
mostra a parte correspondente, -h
ocultará o nome do arquivo ao lado da linha correspondente e -l
listará apenas o nome do arquivo.
Caso você deseje o nome do arquivo e a linha correspondente:
grep -HPoz '\A(.*\n){0,9}\K[^\n]*main\(\)[^\n]*\n' file.txt
apenas linha correspondente:
grep -hPoz '\A(.*\n){0,9}\K[^\n]*main\(\)[^\n]*\n' file.txt
(o -h
só é necessário quando há mais de um arquivo)
apenas nome do arquivo:
grep -Pozl '\A(.*\n){0,9}\K[^\n]*main\(\)[^\n]*\n' file.txt
Para executar o diretório atual, mas sem recursão: (ofc, as opções do grep precisam ser fornecidas de acordo com os requisitos mostrados acima)
find . ! -name . -prune -type f \
-exec grep -HPoz '\A(.*\n){0,9}\K[^\n]*main\(\)[^\n]*\n' {} +