Como posso obter todas as chaves ENV dos arquivos .rb e .yml em uma árvore de diretórios?

0

Gostaria de encontrar uma maneira de obter as chaves exclusivas usadas nos arquivos .rb e .yml . Essas chaves são usadas dentro do hash ENV . Então, existem arquivos que contêm coisas como:

ENV['key']

em várias linhas e em várias posições dentro de suas linhas. Além disso, eles podem aparecer várias vezes nessas linhas.

Então, se eu tiver o arquivo:

blah blah blah ENV['key1'] blah blah blah ENV['key2']
blah blah blah ENV['key2']
blah blah
ENV['key3'] blah blah ENV['key2']

depois, gostaria de obter a lista:

key1
key2
key3

Eu consegui fazer isso:

find . -iname "*.rb" -o -iname "*.yml" | xargs egrep 'ENV\[.(.*).\]'

mas não sei como obter as chaves.

Qualquer ajuda seria muito apreciada.

    
por p.matsinopoulos 27.11.2016 / 18:17

1 resposta

0

Tente usar o sinal -o para grep para obter apenas as partes correspondentes da linha:

find . '(' -iname "*.rb" -o -iname "*.yml" ')' -exec grep -o -E 'ENV\[.(.*).\]' {} + | sort -u | cut -d'[' -f 2 | tr -d "']"

Além disso, recomendo usar o -exec flag para find em vez de canalizar para xargs :

por 27.11.2016 / 18:29