Usando R, aqui estão algumas respostas possíveis com pequenas diferenças, já que não sei exatamente o que você quer
# Just a step to read in an extended version of your sample data
dat <- as.matrix(read.table(text=
"A
B
C
D
E
A
B
C
D
E
F
A
B
C
D
E
F
G
H
A
B
C
D
E
F"))
Esta é uma maneira de fazer a divisão. Você poderia criar um índice para dividir os grupos. Em seguida, divida as linhas com base nos agrupamentos.
splitgrp <- cumsum(ave(dat=="A", dat)) # group index
splitlist <-split(dat,splitgrp) # if you want a list
Você pode fazer essa lista em diferentes tipos de objetos, se quiser, assim:
vecofstrings <- sapply(splitlist,paste0,collapse="") # if you want a vector
df <- data.frame(vecofstrings) # if you want a data frame
mat <- matrix(vecofstrings) # if you want a matrix
Finalmente, aqui estão algumas maneiras de salvar esses objetos:
write.table(mat,"mat.csv")
write.table(mat,"mat.csv", quote=F, row.names=F)
# Here are a few ways to save a data frame.
write.table(df,"df.txt")
write.table(df,"df.txt", quote=F) # no quotes in the saved file
write.table(df,"df.txt", row.names=F) # no row names in the saved file
write.table(df,"df.txt", row.names=F, col.names=F) # no row or column names in the saved file
write.table(df,"df.txt",row.names=F, col.names=F, quote=F) # no row or columns names and no quotes in the saved file