Regex ripgreb:显示两次点击之间的搜索结果
我对ripgreb很陌生,但对它印象深刻 我有一个非常特殊的triggy案例,我想知道是否可以这样做 假设我有两个降价文件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中搜索每行包含一
...
## 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}' *