Como mover cada grupo de linhas para uma nova coluna?

2

Gostaria de mover todos os grupos de linhas para colunas dessa maneira.

Entrada:

R1C1
R2C1
R3C1
R1C2
R2C2
R3C2
R1C3
R2C3
R3C3

Saída:

R1C1 R1C2 R1C3
R2C1 R2C2 R2C3
R3C1 R3C2 R3C3

Também adiciono exemplos reais com alguns números abaixo.

Entrada:

8.097e-10
7.099e-10
6.638e-10
6.395e-10
6.258e-10
6.180e-10
6.134e-10
6.108e-10
6.093e-10

Saída:

8.097e-10 6.395e-10 6.134e-10
7.099e-10 6.258e-10 6.108e-10
6.638e-10 6.180e-10 6.093e-10
    
por funfun 03.09.2018 / 00:40

3 respostas

5

Você pode usar o comando pr :

pr -T -3 input_file > output_file
  • -3 significa que haverá 3 colunas
  • -T omite paginação de saída
por 03.09.2018 / 00:53
3

Se você realmente precisa fazê-lo com o awk, então talvez use uma matriz indexada pelo número de registro modulo 3

awk '{i = (NR-1)%3; a[i] = a[i]? a[i] OFS $0 : $0} END{for(i=0;i<3;i++) print a[i]}' file
R1C1 R1C2 R1C3
R2C1 R2C2 R2C3
R3C1 R3C2 R3C3

Se o utilitário rs ( r e s hape) estiver disponível,

rs 0 3 < file | rs -T

ou

paste - - - < file | rs -c -T
    
por 03.09.2018 / 01:21
0
$ cat test.txt
R1C1
R2C1
R3C1
R1C2
R2C2
R3C2
R1C3
R2C3
R3C3

$ awk '{Arr[substr($0,1,2)]=Arr[substr($0,1,2)]" "$0}END{for (i in Arr){print Arr[i]}}' test.txt
 R1C1 R1C2 R1C3
 R2C1 R2C2 R2C3
 R3C1 R3C2 R3C3
    
por 03.09.2018 / 05:45