考虑使用grep命令来查找字符串,然后循环输出,但任何人都有任何想法更好地解决它?
在file.js中查看模式正则表达式: SearchMethod \(([a-zA-Z] *)\)
找到后,使用另一个正则表达式 capture =('[a-zA-Z']')查找同一文件中的上一次捕获,并找到如下内容:
来自 capture ='value';
获取字符串'value'。
并返回字符串'值'以及它所属的文件名。
答案 0 :(得分:1)
首先,一些示例数据:
$ cat file
capture='foo'
capture='bar'
capture='baz'
capture='foobar'
SearchMethod(foo)
SearchMethod(bar)
SearchMethod(qux)
然后,获取“搜索字符串”,SearchMethod参数
$ search_strings=$( grep -oP 'SearchMethod\(\K\w+' file | paste -s -d'|' )
$ echo "$search_strings"
foo|bar|qux
然后,在输出
中搜索带有文件名的“捕获”字样$ grep -HoP "capture='\\K($search_strings)\\b" file
file:foo
file:bar
\b
为您提供了单词边界约束,这就是foobar
未在最终输出中显示的原因。
需要GNU grep,你可以在Linux上获得。