微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

这个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正则表达式的匹配文本。

解决方法

我正在寻找一种快速简便的单行代码,以从文本文件中提取所有包含搜索字符串的大括号分隔的文本块。我只是为此而在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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。