Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex ripgreb:显示两次点击之间的搜索结果_Regex_Ripgrep - Fatal编程技术网

Regex ripgreb:显示两次点击之间的搜索结果

Regex ripgreb:显示两次点击之间的搜索结果,regex,ripgrep,Regex,Ripgrep,我对ripgreb很陌生,但对它印象深刻 我有一个非常特殊的triggy案例,我想知道是否可以这样做 假设我有两个降价文件 ... ## 5.9 Subheading plz, plz, plz do NOT find me! # 6 Heading ## 6.1 subheading plz, plz, plz FIND me! ## 6.2 subheading plz, plz, plz do NOT find me! ... 及 是否可以在#6.1和#6.2中搜索每行包含一

我对ripgreb很陌生,但对它印象深刻

我有一个非常特殊的triggy案例,我想知道是否可以这样做

假设我有两个降价文件

...
## 5.9 Subheading

plz, plz, plz do NOT find me!

# 6 Heading

## 6.1 subheading

plz, plz, plz FIND me!

## 6.2 subheading

plz, plz, plz do NOT find me!
...

是否可以在
#6.1
#6.2
中搜索每行包含一个以上逗号的行

所以它展示了这样的东西

$rg <magic-search term>

221 plz, plz, plz FIND me!

256 plz, plz, plz FIND me too!


但这不会在“##6.1”之后搜索多个逗号,也不会将搜索限制在“##6.1”之后


更新 我找到了一个用于ripgrep的“解决方案”,并将其放在这里:

$rg '## 6.1.*## 6.2' --multiline --multiline-dotall 

220 ## 6.1 subheading
221 plz, plz, plz FIND me!
222 ## 6.2 subheading

255 ## 6.1 subheading
256 plz, plz, plz FIND me too!
257 ## 6.2 subheading
目前它还打印出标题(
##6.1
#6.2

试图通过这样做来避免这种情况,但这只是删除了第一行而不是整行

$rg '(?:(?!## 6.1).)*## 6.2' --multiline --multiline-dotall --pcre2

220 # 6.1 subheading
221 plz, plz, plz FIND me!
222 ## 6.2 subheading

255 # 6.1 subheading
256 plz, plz, plz FIND me too!
257 ## 6.2 subheading


感谢您将我的评论转换为答案,以便将来的访问者能够轻松找到解决方案

您可以使用此
awk

awk -F, '/^## 6\.1 /{p=1; next} /^## 6\.2 /{p=0} p && NF > 1' file
当我们遇到
##6.1
时,标志
p
将设置为
1
,当我们遇到
#6.2
时,标志将重置

要与同时打印文件名的通配符一起使用,请执行以下操作:

awk -F, '/^## 6\.1 /{p=1; next} /^## 6\.2 /{p=0}
  p && NF > 1{print FILENAME ":", $0}' *

另外,请将您的预期输出样本与提及要添加的anubhava先生一起添加,以便我们也能清楚地了解您的问题。@anubhava我试图将我的问题更新为您的问题comments@RavinderSingh13我试图将我的问题更新到你的评论中,但是
256 plz,plz,plz也找到我了请尝试此awk:
awk-F,'/^##6\.1/{p=1;next}/^###6\.2/{p=0}p&&NF>1'文件
awk -F, '/^## 6\.1 /{p=1; next} /^## 6\.2 /{p=0} p && NF > 1' file
awk -F, '/^## 6\.1 /{p=1; next} /^## 6\.2 /{p=0}
  p && NF > 1{print FILENAME ":", $0}' *