如何从多个文件中提取尖叫蛇案例字符串列表?

use*_*327 4 regex shell grep find

我正在寻找一种从多个文件中提取“尖叫蛇案例”字符串的方法。

Screaming snake case 是由下划线分隔的大写单词。正则表达式将是([A-Z]*_?[A-Z]*)*.

现在我正在寻找一种在多个文件中查找此类匹配字符串的方法。我希望 grep 或 find 有帮助吗?

我拥有的:

  • 多个子目录中的多个文件
  • cygwin 的 shell 可能性(因此可以使用最常见的 Linux 命令)
  • 可能发生多个这样的字符串在一行中

例如:

Some text WITH some SNAKE_CASE words.
Run Code Online (Sandbox Code Playgroud)

输出应该是一个列表,如:

WITH
SNAKE_CASE
Run Code Online (Sandbox Code Playgroud)

用例是,snake case 词被用作 i18n 键来维护属性文件,但没有 IDE 支持来保持所有这些同步。

我现在使用的是:

find . -name "*.js" -exec grep -oP '\b[A-Z]+(_[A-Z]+)*\b' {} + | cut -d':' -f2 | sort | uniq
Run Code Online (Sandbox Code Playgroud)

感谢你的支持

Avi*_*Raj 5

认为你是这个意思,

grep -oP '\b[A-Z]+(_[A-Z]+)*\b' file
Run Code Online (Sandbox Code Playgroud)

只需通过上面的正则表达式来查找命令。

find FOLDER -type f -exec grep -oP '\b[A-Z]+(_[A-Z]+)*\b' {} +
Run Code Online (Sandbox Code Playgroud)