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

时间:2015-07-16 09:09:52

标签: regex shell grep find

我正在寻找一种提取"尖叫蛇案的方法"来自多个文件的字符串。

尖叫的蛇案例是用下划线分隔的大写单词。 正则表达式为([A-Z]*_?[A-Z]*)*

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

我有什么:

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

例如:

Some text WITH some SNAKE_CASE words.

输出应该是一个列表:

WITH
SNAKE_CASE

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

我现在使用的是:

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

感谢您的支持

1 个答案:

答案 0 :(得分:4)

认为你的意思是,

grep -oP '\b[A-Z]+(_[A-Z]+)*\b' file

只需将上述正则表达式传递给find命令。

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