使用模式标记之间的sed/awk将多个线值拆分为列

使用模式标记之间的sed/awk将多个线值拆分为列,awk,sed,split,multiline,Awk,Sed,Split,Multiline,我需要将模式标记1和2之间的行拆分为列。 我注意到Sed表示未能拆分列。有人能帮忙吗 StartPattern1 AAA\n BBB\n CCC\n EndPattern Some text StartPattern2 XXX\n YYY\n ZZZ\n MMM\n NNN\n EndPattern2 sed/awk需要的结果: StartPattern1 AAA\tBBB\tCCC End Pattern1 StartPattern2 XXX\tYYY\tZZZ\tMMM\tNNN\n End

我需要将模式标记1和2之间的行拆分为列。 我注意到Sed表示未能拆分列。有人能帮忙吗

StartPattern1 AAA\n BBB\n CCC\n EndPattern Some text StartPattern2 XXX\n YYY\n ZZZ\n MMM\n NNN\n EndPattern2 sed/awk需要的结果:

StartPattern1 AAA\tBBB\tCCC End Pattern1 StartPattern2 XXX\tYYY\tZZZ\tMMM\tNNN\n EndPattern2 这应该起作用:

cat file
StartPattern1
AAA
BBB
CCC
EndPattern
Some text
StartPattern2
XXX
YYY
ZZZ
MMM
NNN
EndPattern2
这里还有一个:

awk '/^Start/{f=g=1} /^End/{f=0;print "\n"$0} f {printf "%s%s",$0,(g--==1?RS:"\t")}' file
StartPattern1
AAA     BBB     CCC
EndPattern
StartPattern2
XXX     YYY     ZZZ     MMM     NNN
EndPattern2
新行或文本是否与\t相同?
awk '/^Start/{f=g=1} /^End/{f=0;print "\n"$0} f {printf "%s%s",$0,(g--==1?RS:"\t")}' file
StartPattern1
AAA     BBB     CCC
EndPattern
StartPattern2
XXX     YYY     ZZZ     MMM     NNN
EndPattern2