grep - reconhece o retorno de carro como nova linha [fechado]

2

Eu quero pesquisar um servidor web executando unix para arquivos php contendo uma string específica. Normalmente eu uso esses comandos para fazer isso:

encontre. -name "* .php" -print0 | xargs -0 grep -H -i "a string para procurar"

Isso funcionou muito bem até agora, mas agora encontrei um servidor em que todos os scripts php não possuem feeds de linha, mas apenas retornos de carro. grep não parece reconhecer o retorno de carro como nova linha, então o comando acima irá imprimir todo o conteúdo de um arquivo se houver uma correspondência dentro dele, em vez de apenas imprimir a linha.

Qualquer ajuda seria muito apreciada!

    
por quano 30.09.2011 / 22:26

1 resposta

1

Não é muito eficiente, mas deve funcionar:

find . -name '*.php' -exec bash -c "grep 'pattern' <(tr '\r' '\n' <{})" \;

Esta é uma alternativa para mostrar o nome do arquivo:

find . -name '*.php' -exec bash -c "grep 'pattern' <(tr '\r' '\n' <'{}') |
    sed s+^+'{}':\ +" \;
    
por 30.09.2011 / 23:02