Mi prueba tiene el siguiente aspecto: tengo varios fragmentos de texto con un encabezado de una línea introducido por un '>'. No está claro qué tipo de texto aparece en el encabezado, solo que es solo una línea. La longitud del fragmento de texto después del encabezado puede variar. También puede haber líneas vacías en el medio, como se muestra entre las partes de texto uno y dos (ver más abajo). También el número de piezas de texto es variable.
>Sequenz 1 Test 1234 MTEITAAMVKELRESTGAGMMDCKNALSETNGDFDKAVQLLREKGLGKAAKKADRLAAEG LVSVKVSDDFTIAAMRPSYLSYEDLDMTFVENEYKALVAELEKENEERRRLKDPNKPEHK IPQFASRKQLSDAILKEAEEKIKEELKAQGKPEKIWDNIIPGKMNSFIADNSQLDSKLTL MGQFYVMDDKKTVEQVIAEKEKEFGGKIKIVEFICFEVGEGEVAAQL >Sequenz 2 | Test: 1234 SATVSEINSETDFVAKNDQFIALTKDTTAHIQSNSLQSVEELHSSTINGVKFEEYLKSQI ATIGENLVVRRFATLKAGANGVVNGYIHTNGRVGVVIAAACDSAEVASKSRDLLRQICMH LVSVKVSDDFTIAAMRPSYLSYEDLDMTFVENEYKALVAELEKENEERRRLKDPNKPEHK IPQFASRKQLSDAILKEAEEKIKEELKAQGKPEKIWDNIIPGKMNSFIADNSQLDSKLTL MGQFYVMDDKKTVEQVIAEKEKEFGGKIKIVEFICFEVGEGEVAAQL >Sequenz 3 : Test : 1234 MTEITAAMVKELRESTGAGMMDCKNALSETNGDFDKAVQLLREKGLGKAAKKADRLAAEG LVSVKVSDDFTIAAMRPSYLSYEDLDMTFVENEYKALVAELEKENEERRRLKDPNKPEHK IPQFASRKQLSDAILKEAEEKIKEELKAQGKPEKIWDNIIPGKMNSFIADNSQLDSKLTL MGQFYVMDDKKTVEQVIAEKEKEFGGKIKIVEFICFEVGEGEVAAQLQuiero dividirlo en dos columnas. Uno con el encabezado sin el '>' inicial. La segunda columna debe contener la parte de texto correspondiente.
|Header |Text |--------------------------------|----------------------------------------------------------- |Sequenz 1 Test 1234 |MTEITAAMVKELRESTGAGMMDCKNALSETNGDFDKAVQLLREKGLGKAAKKADRLAAEG | |LVSVKVSDDFTIAAMRPSYLSYEDLDMTFVENEYKALVAELEKENEERRRLKDPNKPEHK | |IPQFASRKQLSDAILKEAEEKIKEELKAQGKPEKIWDNIIPGKMNSFIADNSQLDSKLTL | |MGQFYVMDDKKTVEQVIAEKEKEFGGKIKIVEFICFEVGEGEVAAQL |--------------------------------|----------------------------------------------------------- |Sequenz 2 | Test: 1234 |SATVSEINSETDFVAKNDQFIALTKDTTAHIQSNSLQSVEELHSSTINGVKFEEYLKSQI | |ATIGENLVVRRFATLKAGANGVVNGYIHTNGRVGVVIAAACDSAEVASKSRDLLRQICMH | |LVSVKVSDDFTIAAMRPSYLSYEDLDMTFVENEYKALVAELEKENEERRRLKDPNKPEHK | |IPQFASRKQLSDAILKEAEEKIKEELKAQGKPEKIWDNIIPGKMNSFIADNSQLDSKLTL | |MGQFYVMDDKKTVEQVIAEKEKEFGGKIKIVEFICFEVGEGEVAAQL |--------------------------------|----------------------------------------------------------- |Sequenz 3 : Test : 1234 |MTEITAAMVKELRESTGAGMMDCKNALSETNGDFDKAVQLLREKGLGKAAKKADRLAAEG | |LVSVKVSDDFTIAAMRPSYLSYEDLDMTFVENEYKALVAELEKENEERRRLKDPNKPEHK | |IPQFASRKQLSDAILKEAEEKIKEELKAQGKPEKIWDNIIPGKMNSFIADNSQLDSKLTL | |MGQFYVMDDKKTVEQVIAEKEKEFGGKIKIVEFICFEVGEGEVAAQL |--------------------------------|-----------------------------------------------------------Ya tengo una declaración de selección para extraer el encabezado.
SELECT split_part(regexp_split_to_table(trim(leading '>' FROM 'text from above'), E'>'),E'\n', 1)Pero realmente no tengo idea de cómo dividió el texto después del encabezado en la segunda columna. ¡Agradezco la ayuda! Gracias por adelantado.
Esto capturará el encabezado en el grupo uno y el texto en el grupo dos.
>(.*)([\s\S]*?)(?=\R>|$) Captura todo después de > hasta un salto de línea. Luego captura todo hasta un salto de línea seguido de un > o el final de la cadena.