Faz um loop pelos arquivos e se junta horizontalmente

4

Estou tentando fazer o seguinte:

  1. Fazer um loop por meio de uma lista de arquivos
  2. Edite cada arquivo e envie um arquivo "aparado"
  3. Unir horizontalmente cada arquivo aparado, por sua vez, a um arquivo mestre pré-fabricado

Eu tenho as etapas 1 e amp; 2 trabalhando, mas não consegue que 3 funcione.

Exemplo

ARQUIVO MESTRE:

Col1   Col2
A       1
B       1
C       2

ARQUIVO TRIMMED para o arquivo S1:

S1.Col3    S1.Col4
0            1
1            1
1            1

SAÍDA ANTES DE S1 & S2 juntou-se a MASTER:

Col1   Col2   S1.Col3   S1.Col4   S2.Col3   S2.Col4
A       1       0         1          0        1
B       1       1         1          1        0
C       2       1         1          0        0

Após cada loop, eu tentei executar algo como:

paste MASTER.txt S1.txt > MASTER.txt

No entanto, em vez do acima, recebo um arquivo com apenas os dados do último arquivo S. Eu tentei executar isso sem saída e fora do loop, tudo funciona bem. Agradecemos antecipadamente por quaisquer respostas.

Para finalizar, aqui está um detalhamento muito simplificado do meu loop.

for FILE in FILELIST
do
    cut -f4,6 $FILE > ${FILE}_trimmed.txt
    paste MASTER.txt ${FILE}_trimmed.txt > MASTER.txt
done
    
por Gaius Augustus 22.12.2015 / 05:47

1 resposta

2

Obrigado ao 1_CR, que respondeu isso nos comentários.

O > MASTER.txt está truncar o arquivo antes que a pasta realmente conclua a junção horizontal. A resposta é a saída para um arquivo temporário (por exemplo, MASTER2.txt) e, em seguida, renomeá-lo (com o comando mv) para o nome de arquivo adequado.

Meu código antigo:

paste MASTER.txt ${FILE}_trimmed.txt > MASTER.txt

Código fixo:

paste MASTER.txt ${FILE}_trimmed.txt > MASTER2.txt && mv MASTER2.txt MASTER.txt
    
por 22.12.2015 / 06:38

Tags