草庐IT

regex - Grep for word and line before match

coder 2023-06-21 原文

我有一个文本日志文件,其中包含多个条目,如下所示:

Processing input.jpg (323 of 500)...
Detecting matches in region 1...
Detecting matches in region 2...
Detecting matches in region 3...
Detecting matches in region 4...
Detecting matches in region (n)...
...
NOT ENOUGH MATCHES - FULL FILE OUTPUT
Processing input1.jpg (324 of 500)...

我想对文件进行 grep 以匹配出现 FULL FILE 序列的每个实例,然后获取生成该结果的文件的名称 - 即在每个 FULL FILE 匹配之前找到开始处理的行。

如何使用 grep 或其他工具(如 sed 或 awk)执行此操作?

到目前为止,我能够匹配在日志中找到 FULL FILE 的每个实例并对其进行计数:

cat output.txt | grep "FULL FILE" | wc -l

但我现在需要从日志文件中为每个匹配项获取前面的文件名。

非常感谢任何帮助。

最佳答案

假设文件名中没有空格,awk 就可以了

awk '/^Processing/{file=$2};/FULL FILE OUTPUT$/{print file}' output.txt

关于regex - Grep for word and line before match,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27659360/

有关regex - Grep for word and line before match的更多相关文章

  1. ruby-on-rails - 尝试为 Rails 中的用户名验证编写 REGEX - 2

    我正在尝试用Ruby(Rails)编写一个正则表达式,以便用户名的字符仅包含数字和字母(也没有空格)。我有这个正则表达式,/^[a-zA-Z0-9]+$/,但它似乎没有用,我在Rails中收到一个错误,说“The如果正则表达式使用多行anchor(^或$),这可能会带来安全风险。您是要使用\A和\z,还是忘记添加:multiline=>true选项?"我的user.rb模型中此实现的完整代码是:classUser我做错了什么以及如何修复此正则表达式,使其仅对数字和字母有效而不对空格有效?谢谢。 最佳答案 简短回答:使用/\A[a-z

  2. Ruby Regex,获取所有可能的匹配项(不截断字符串) - 2

    我遇到了ruby​​正则表达式的问题。我需要找到所有(可能重叠的)匹配项。这是问题的简化:#Simpleexample"Hey".scan(/../)=>["He"]#Actualresults#Withoverlappingmatchestheresultshouldbe=>["He"],["ey"]我尝试执行并获得所有结果的正则表达式如下所示:"aaaaaa".scan(/^(..+)\1+$/)#Thislooksformultiplesof(here)"a"biggerthanonethat"fills"theentirestring."aa"*3=>true,"aaa"*2=

  3. regex - Ruby 是否有类似于 Perl 6 语法的插件? - 2

    多年来,Perl一直是我首选的编程语言工具之一。Perl6语法看起来像是一个很棒的语言特性。我想知道是否有人开始为Ruby做这样的事情。 最佳答案 如果您想在Ruby中使用实际的Perl6语法,最好的选择是Cardinal,Parrot上的ruby​​编译器。它目前尚未完成并且非常缓慢,但我非常希望它最终成为一个可行的ruby​​实现。它目前大部分处于非事件状态,等待Parrot中的一些基础架构更改以支持改进的解析速度和其他功能。 关于regex-Ruby是否有类似于Perl6语法的插件

  4. Ruby Regex 舍入尾随零 - 2

    我正在寻找一个正则表达式来从十进制数字中删除尾随零。它应该返回以下结果:0.0002300->0.0002310.002300->10.0023100.0->1001000->10000.0->00->0基本上,如果小数部分为0,它应该删除尾随零和尾随小数点。当它是该值时,它也应该返回0。有什么想法吗?谢谢。 最佳答案 另一种方式["100.0","0.00223000"].map{|x|"%g"%x} 关于RubyRegex舍入尾随零,我们在StackOverflow上找到一个类似的问

  5. Ruby Regex Gsub 不匹配时 - 2

    我想将字符串中所有不是字母的字符替换为“#”。我想我需要一个类似于“当此正则表达式不匹配时使用gsub()”的正则表达式。有什么想法吗? 最佳答案 你看,没有正则表达式......str.tr('^A-Za-z','#') 关于RubyRegexGsub不匹配时,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4715384/

  6. Ruby RegEx 问题 text.gsub[^\W-], '' ) 失败 - 2

    我正在尝试根据我在“RailsWay”中阅读的内容学习Ruby中的RegEx。但是,即使是这个简单的例子也让我感到难过。不知道是不是打错了:text.gsub(/\s/,"-").gsub([^\W-],'').downcase在我看来,这会将所有空格替换为-,然后将字符串以非字母或数字开头且后跟破折号的任何地方替换为“”。但是,使用irb,它首先在^上失败:syntaxerror,unexpected'^',expecting']'如果我取出^,它会在W上再次失败。 最佳答案 >>text="Ilovespaces"=>"Ilov

  7. ruby - Ruby 和 Perl 中的 Regex 语法有什么区别? - 2

    据我了解,当Matz发明Ruby时,他几乎提升了许多Perl语言结构并复制了它们。这是否也扩展到正则表达式,或者是否有任何我应该注意的语法差异? 最佳答案 在https://www.regular-expressions.info/refbasic.html中对多种语言的正则表达式支持进行了广泛的比较。及其兄弟页面。输入您想要比较w.r.t.的两种语言。支持正则表达式功能,并查看表中的差异。 关于ruby-Ruby和Perl中的Regex语法有什么区别?,我们在StackOverflow

  8. ruby/regex 获取每个单词的第一个字母 - 2

    我想把每个单词的第一个字母放在一起,使“我需要帮助”变成“Inh”。我当时想剪掉所有东西,然后从那里开始,或者立即抓取每个第一个字母。 最佳答案 您可以在这里简单地使用split、ma​​p和join。string='Ineedhelp'result=string.split.map(&:first).joinputsresult#=>"Inh" 关于ruby/regex获取每个单词的第一个字母,我们在StackOverflow上找到一个类似的问题: http

  9. ruby-on-rails - 通过 Regex、Ruby 拆分时保留模式字符 - 2

    我有以下字符串str="HelloWorldHowareYouIAmFine"我要把这个字符串放到下面的数组中["Hello","WorldHoware","YouIAm","Fine"]我一直在使用以下正则表达式,它正确拆分但也省略了匹配模式,我也想保留该模式。我得到的是str.split(/[a-z][A-Z]/)=>["Hell","orldHowar","ouIA","ine"]它省略了匹配模式。谁能帮我解决如何在结果数组中保留这些字符 最佳答案 在Ruby1.9中,您可以使用positivelookaheadandposi

  10. Ruby Regex 非贪婪匹配 : looking for the closest occurrence of a phrase left to a searched word - 2

    假设我有以下字符串:"BENffew123X\r\nBENx432f456X\r\nBEN!233789X\r\nBEN4545789X"我想要一个能捕获“BEN!233789”的正则表达式,它必须非贪婪地查找“BEN”,后跟任何字符(不包括“BEN”一词)并以789X结尾。我尝试了正则表达式:/BEN.+?789X/mi,我得到了"BENffew123X\r\nBENx432f456X\r\nBEN!233789X"作为匹配项。我知道这个正则表达式寻找第一个“BEN”并捕获字符串的开头,但我希望它寻找最接近第一个“789X”的“BEN”。我怎样才能做到这一点?一个想法是反转字符串,我

随机推荐