我正在尋找一個快速簡單的單行提取所有大括號分隔的文本塊,其中包含文本文件中的搜索字符串。我只是把自己搞糊塗了,但每個人似乎都只是在沒有搜索字符串的情況下在大括號之間發送文本。如何在包含特定搜索字符串的兩個大括號之間獲得多行字符串?
我有與內容的大的文本文件是這樣的:
blabla
blabla {
blabla
}
blabla
blabla {
blabla
blablaeventblabla
}
blabla
絕大多數括號項不包含搜索字符串,這是「事件」。
我想要提取的是每個花括號之間的所有文本(特別是包括多行匹配),但只有當所述文本也包含搜索字符串時。所以這樣的輸出:
blabla {
blabla
blablaeventblabla
}
我的Linux命令行是/ usr/bin/bash。我一直在嘗試不同的grep和awk命令,但就是無法得到它的工作:
awk '/{/,/event/,/}/' filepath
grep -iE "/{.*event.*/}" filepath
我想這將是很容易的,因爲它是一個共同的任務。我在這裏錯過了什麼?
這隻要運作良好的匹配捲曲大括號不在同一行。另一個答案處理這種情況(用戶9999999..9消失的那個)。 我看到,如果我想要理解這個答案,我將不得不在awk上閱讀很多內容。也許今晚。 – leu
查看已更新的答案以允許在同一行上使用「{」和「}」。 – anubhava
謝謝anubhava,效果很棒!接受爲答案。 當然,這個答案與格式錯誤的情況下的其他答案有相同的警告(如嵌套的花括號或缺少匹配的大括號)。 – leu