디렉토리 트리의 .rb 및 .yml 파일에서 모든 ENV 키를 가져오는 방법은 무엇입니까?

디렉토리 트리의 .rb 및 .yml 파일에서 모든 ENV 키를 가져오는 방법은 무엇입니까?

.rb내부적 으로나 파일에서 .yml사용되는 고유 키를 얻는 방법을 찾고 싶습니다 . 이 키는 해시에 의해 내부적으로 사용됩니다 ENV. 따라서 일부 파일에는 다음 내용이 포함되어 있습니다.

ENV['key']

여러 라인에 걸쳐 그리고 라인 내의 다양한 위치에 있습니다. 또한 이러한 줄에 여러 번 나타날 수도 있습니다.

따라서 파일이 있는 경우:

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

그런 다음 목록을 얻고 싶습니다.

key1
key2
key3

나는 이것을 수행했습니다 :

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

하지만 실제로 열쇠를 얻는 방법을 모르겠습니다.

어떤 도움이라도 대단히 감사하겠습니다.

답변1

-o플래그를 사용하여 grep행의 일치하는 부분만 얻으십시오.

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

또한 파이프 대신 -exec플래그를 사용하여 다음을 수행하는 것이 좋습니다 .findxargs

관련 정보