Combinando arquivos com 4 colunas cada, em 4 arquivos para cada coluna [fechada]

2

Então eu tenho um monte de arquivos de texto que se parecem com isso:

T1
r1 a b c d
r2 d e f g
...

T2
r1 h i j k
r2 l m n o
...

E eu quero fazer quatro arquivos de texto diferentes no seguinte formato:

__ T1 T2 ...
r1 a h ...
r2 d l ...

__ T1 T2 ...
r1 b i ...
r2 e m ...

Então, basicamente, eu tenho um certo número de arquivos. Cada um pega uma TEMPERATURA e depois passa por CAMPOS MAGNÉTICOS (T1 ... temp; r1, r2, .. campo magnético) e depois a, b, c, d etc são 4 cálculos diferentes, cada coluna sendo a sua. Eu quero ser capaz de compilar a primeira coluna para cada T (arquivo) em um único arquivo para que eu possa copiá-lo para o excel, então compilar a coluna segundo para cada T em um arquivo diferente e fazer o mesmo. Se alguém me disser como colocar os dados para que os formatos sejam exatamente iguais aos meus arquivos, posso detalhar mais a minha pergunta ...

    
por malevolence19 22.10.2012 / 02:15

1 resposta

2

Estou assumindo T1, T2 são os nomes de quatro arquivos de entrada:

Usando o awk:

awk 'FNR==1 { header = header " " FILENAME;
              next # we want to skip the first line
            }
            { rows[$1]; for(i=2;i<=NF;i++) A[$1,i] = A[$1,i] " " $i }
        END { for(i=2;i<=5;i++) {
                printf("__%s\n", header);
                for(j in rows) printf("%s%s\n", j, A[j,i]);
              }
            }' T1 T2 T3 T4 

Isso cria apenas um único arquivo de saída, com todas as tabelas desejadas concatenadas. Se você quiser dividi-lo em quatro arquivos, terá que fazer mais trabalho.

Se você quiser extrair as linhas de cabeçalho da primeira linha em vez do nome dos arquivos de entrada, substitua FILENAME por $0 .

    
por 22.10.2012 / 03:14