当前位置: 首页 > 面试题库 >

如何在包含特定搜索字符串的两个大括号之间获取多行字符串?

戴靖
2023-03-14
问题内容

我正在寻找一种快速简便的单行代码,以从文本文件中提取所有包含搜索字符串的大括号分隔的文本块。我只是为此而在Google上发疯,但是每个人似乎都只是在发布有关在没有搜索字符串的情况下在大括号之间获取文本的信息。

我有一个大型文本文件,其内容如下:

blabla
blabla {
  blabla
}
blabla
blabla {
  blabla
  blablaeventblabla
}
blabla

方括号中的绝大多数条目都不包含搜索字符串,即“事件”。

我要提取的是每组花括号之间的所有文本(尤其是多行匹配),但前提是所述文本还包含搜索字符串。因此输出如下:

blabla {
  blabla
  blablaeventblabla
}

我的linux命令行是/ usr / bin / bash。我一直在尝试各种grep和awk命令,但无法使其正常工作:

awk '/{/,/event/,/}/' filepath

grep -iE "/{.*event.*/}" filepath

我当时以为这很容易,因为这是一项常见的任务。我在这里想念什么?


问题答案:

这个gnu-awk应该可以工作:

awk -v RS='[^\n]*{|}' 'RT ~ /{/{p=RT} /event/{ print p $0 RT }' file
blabla {
   blabla
   blablaeventblabla
}

RS='[^\n]*{\n|}'将输入记录分隔符设置为任意文本,后跟{OR
}RT是内部awk变量,该变量设置为基于RS正则表达式的匹配文本。



 类似资料:
  • 问题内容: 我需要从两个字符之间获取字符串。我有这个 并且必须在一个变量中分别返回4个字符串: 问题答案: 有。由于它接受正则表达式字符串,并且是正则表达式中的特殊字符,因此您需要对其进行转义(带有反斜杠)。而且,由于是在Java中字符串字面特殊字符,你需要逃脱 它 ,也一样,人们有时会感到迷惑。因此给出: 然后 将输出 ( 在 前三位上 有 尾随空格;如果需要,这些空格。)

  • 问题内容: 想要改善这篇文章吗? 提供此问题的详细答案,包括引文和为什么答案正确的解释。答案不够详细的答案可能会被编辑或删除。 我需要一个函数来返回两个单词(或两个字符)之间的子字符串。我想知道是否有实现该功能的php函数。我不想考虑正则表达式(嗯,我可以做一个,但实际上并不认为这是最好的方法)。思维与功能。这是一个例子: 我们调用该函数: 它返回:“我想要一个蛋糕”。 提前致谢。 更新: 嗯,到

  • 问题内容: 我有以下测试(格式如下): 我正在尝试获取“测试部分:”和“我的部分”之后的文本 我用不同的RegEx模式进行了几次尝试,但结果一无所获。 如果我做: 然后,我得到正确的答复: 但是,如果我这样做 我没有结果。结果应为“我的第二 部分 ” 我也尝试过使用RegEx Multiline,但没有结果。 任何帮助,将不胜感激。 如果重要的话,我正在Python 2.7中进行编码。 如果不清楚

  • 问题内容: 我需要从字符串中提取两个定界符之间包含的一组字符,而不返回定界符本身。 一个简单的例子应该会有所帮助: 目标:提取方括号之间的子字符串,而不返回括号本身。 基本字串: 如果我使用以下规则。前任。 比赛是。我只需要得到(没有括号)。 有可能做到吗? 问题答案: 简单易行: 从技术上讲,这是使用先行和后备。请参阅前瞻和零宽度断言。该模式包括: 前面有一个[未捕获(向后看); 一个非贪婪的捕

  • 我尝试只替换两个符号之间的字符串,并在字符串包含特定单词时开始替换,例如: 因此,我想要使用preg_replace的字符串是这两个符号之间的字符串,我想要使用preg_replace,只要字符串包含一个css标记,例如

  • 问题内容: 我从html解析中得到一个字符串,即 我的代码是这样的 我不确定我的第二个拆分字符串应该是“’”还是“’,” 我希望我的结果是 问题答案: 我将使用正则表达式从这样的复杂输入中提取子字符串。 Swift 3.1: Swift 2.0: