Regex 如何查找特定字符串并将其作为同一文件中新查找的条目 我需要用正则表达式在多个文件夹的多个文件中查找字符串。该字符串可以在多个文件中 当我找到它时,获取字符串并在同一文件中再次搜索,但现在使用特定的字符串 并返回找到字符串的文件名和字符串本身

Regex 如何查找特定字符串并将其作为同一文件中新查找的条目 我需要用正则表达式在多个文件夹的多个文件中查找字符串。该字符串可以在多个文件中 当我找到它时,获取字符串并在同一文件中再次搜索,但现在使用特定的字符串 并返回找到字符串的文件名和字符串本身,regex,linux,bash,grep,Regex,Linux,Bash,Grep,考虑使用grep命令查找字符串,然后循环输出,但有人有更好的解决方法吗 例如: 在file.js中查看模式regex:SearchMethod\([a-zA-Z]*)\) 找到后,使用另一个regexcapture=(“[a-zA-Z']”)在同一文件中查找上一个捕获,并将找到如下内容: 从capture='value' 获取字符串“值” 并返回字符串“value”及其所属文件的名称 首先,一些样本数据: $ cat file capture='foo' capture='bar' captur

考虑使用grep命令查找字符串,然后循环输出,但有人有更好的解决方法吗

例如: 在file.js中查看模式regex:SearchMethod\([a-zA-Z]*)\)

找到后,使用另一个regexcapture=(“[a-zA-Z']”)在同一文件中查找上一个捕获,并将找到如下内容:

capture='value'

获取字符串“值”

并返回字符串“value”及其所属文件的名称


首先,一些样本数据:

$ 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上获得的。

您知道要搜索的文件吗?因为你说“在文件中”。如果在一个目录中,那么搜索字符串,通过regex找到,在找到字符串的特定文件中?可能有多种匹配。请详细说明。为什么要搜索文件两次?使用正则表达式查找字符串后,为什么不输出它呢?或者你是在寻找行号还是什么?这个问题确实需要一个带有示例搜索字符串的示例文件。请提供。