linha de comando do Linux (saída de padrão de texto dos arquivos)

1

Eu estou tentando produzir a linha contendo um determinado padrão localizado em arquivos especificamente nomeados em uma hirearchy de diretório não estruturado. Cada arquivo em que estou interessado é chamado "foo.xml". O padrão que me interessa se parece com: <digit><digit>T<digit><digit> (como um regex PERL: \d\dT\d\d ). Eu quero a saída da linha inteira que corresponde a esse padrão (mesmo o material extra nessa linha que não corresponde ao padrão).

Onde estou:

find . | grep foo.xml executado no "root" me fornece uma lista dos arquivos que eu gostaria de escanear.

O que eu faço daqui?

Eu prefiro fazer isso na linha de comando. Eu poderia facilmente escrever um script PERL, mas provavelmente há uma maneira realmente simples de fazer isso.

    
por jglouie 23.07.2012 / 20:28

2 respostas

1

Você poderia tentar algo como:

find . -name foo.xml -exec grep REGEX '{}' \;

editar No seu caso, o REGEX é

'[0-9][0-9]T[0-9][0-9]'
    
por 23.07.2012 / 20:31
1

Alternativamente, desde que você mencionou o PERL, você pode usar a opção -perl-regexp do grep:

find . -name foo.xml -exec grep -P '\d\dT\d\d' '{}' \;

Recurso interessante se você estiver acostumado a perl regexes.

    
por 10.08.2012 / 16:00