Você pode fazer isso com o utilitário rs
no modo de transposição pura ( -T
) - se você espaçar a entrada apropriadamente primeiro, por exemplo,
$ sed -e 's/./& /g' -e 's/ $//' file
a b c d e
f g h i j
k l m n
o p q r s
(ou, se você tem o GNU sed, você pode usar sed 's/./ &/2g'
; outra opção está usando um loop sed -E ':a; s/([^ ])([^ ])/ /; ta'
); então
$ sed -e 's/./& /g' -e 's/ $//' file | rs -Tng0
afko
bglp
chmq
dinr
ej s
As opções importantes são:
-
-T
pure transpose -
-n
pad entradas nulas -
-g0
define a largura da medianiz de saída (espaçamento entre colunas) como zero
Como alternativa, fazer a divisão de entrada usando awk
com um separador de campo de entrada vazio e um separador de campo de saída padrão:
awk '{$1=$1} 1' FS= file | rs -Tng0