如何从目录树中的 .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标志 togrep仅获取该行的匹配部分:

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

另外,我强烈建议使用-exec标志 tofind而不是管道 to xargs

相关内容