Você pode usar awk
para dividir cada bloco em arquivos separados e, em seguida, paste
juntos (abaixo está assumindo sempre que há linhas vazias entre cada lista).
awk '/^$/ {N++;next}{print >"file"N}' infile.txt
paste file*
Você também pode mover o comando paste
para awk
.
awk '/^$/ {N++;next}{print >"file"N} END{system("paste file*")}' inile.txt
A saída é:
List A List B List C
hi Hi Hello
hello Yes
hw r u
para ter recuo de beleza no resultado ao variar o comprimento das linhas, como abaixo:
Arquivo de entrada:
list A
hi
hello
hw r u
List B
Hi this is list B
Yes
List C
Hello, this is list C
você pode fazer paste file* |column -s $'\t' -tn
e terá resultado:
list A List B List C
hi Hi this is list B Hello, this is list C
hello Yes
hw r u