我正在处理大约100个用python,JavaScript和HTML编码的不同文件。其中许多文件以复杂的方式耦合。我遇到的一个问题是尝试将变量或对象追溯到定义的位置。我的问题是,是否有更聪明的方法来寻找一个常用词。例如,以下是在python函数末尾返回的一些键值对。
return {
"form": context["form"],
"groups": context["groups"],
"facilities": context["facilities"],
"student": user,
"topics": topics
}
如果我在这些文件所在的目录中搜索主题:
$ grep 'topics' * -R
我最终得到的文件太多了。我无法将搜索范围缩小到只有.py文件,因为一些JS和HTML文件也是耦合的。任何建议将不胜感激!
答案 0 :(得分:0)
您可以搜索'topics = '
以将其缩小到仅指定名为topics
的变量的位置。这样可以更容易地找出全局变量的来源。
答案 1 :(得分:0)
杰克说,一种聪明的方法是使用=
符号来缩小搜索范围。您可以进一步将其缩小到赋值,假设它第一次出现时,可能会被赋值。这可以这样做:
for f in $(find .); do grep -m 1 'topics[[:space:]]*=' -R; done
这将对当前目录和所有子目录中的每个文件应用grep
命令。然后它将第一次出现字符串(在这种情况下,'主题')。
以下是grep
的手册页,其中显示了所有选项:grep-man-page
以下是Stack Overflow问题,该问题显示了如何在每个文件上grep
获取第一个/最后一个结果:get-last-line-from-grep-on-multiple-files
这是一个Stack overflow问题,处理grep中的空格:grep-regex-whitespace