如何使用 sed 提取跨多行的字符串?

Joh*_*212 1 regex bash sed

CAKE_FROSTING("我需要提取和之间的字符串",。如果字符串跨越多行,则必须删除行更改处的引号和换行符。我有一个命令(感谢 stackoverflow)可以在这个方向上做一些事情,但不完全是。我该如何修复它(您能简单解释一下修复过程吗)?我正在使用 Linux bash。

sed -En ':a;N;s/.*CAKE_FROSTING\(\n?\s*?"([^,]*).*/\1/p;ba' filesToCheck/* > result.txt
Run Code Online (Sandbox Code Playgroud)

文件检查/file.h

something
CAKE_FROSTING(
"is supreme", 
"[i][agree]") something else
something more
something else
CAKE_FROSTING(
"is."kinda" neat"
"in fact", 
"[i][agree]") something else
something more
Run Code Online (Sandbox Code Playgroud)

当前结果.txt

is supreme"
is."kinda" neat"
Run Code Online (Sandbox Code Playgroud)

需要 result.txt

is supreme
is."kinda" neat in fact
Run Code Online (Sandbox Code Playgroud)

编辑:在@D_action的帮助下我现在有了

sed -En ':a;N;s/.*CAKE_FROSTING\(\n?\s*?"([^,]*).*,/\1/p;ba' filesToCheck/* > result.txt
Run Code Online (Sandbox Code Playgroud)

这会产生几乎正确的输出,但输出中存在不必要的引号和过多的换行符:

当前结果.txt

is supreme" 
is."kinda" neat"
"in fact" 
Run Code Online (Sandbox Code Playgroud)

Hat*_*ess 5

使用GNUsed

$ sed -En ':a;N;s/.*CAKE_FROSTING\(\n?\s"([^"]*[^\n,]*)["].*\n"([[:alpha:] ]+)?.*/\1 \2/p;ba' input_file
is supreme
is."kinda" neat in fact
Run Code Online (Sandbox Code Playgroud)