extrai duas colunas e adiciona em um local específico a outro arquivo que já está cheio de colunas

0

Eu tenho um arquivo onde eu quero extrair duas colunas e adicionar em um local específico para outro arquivo que já está cheio de colunas.

Poderia eu catar o arquivo 1 e torná-lo uma variável e, em seguida, catar o arquivo 2 e torná-lo uma variável e, em seguida, combinar as variáveis com export e awk? Alguém me ajudou antes com linhas únicas de texto dessa maneira, mas não sei se isso se aplica a arquivos inteiros.

exemplo:

Arquivo de entrada 1

Group F3D0 F3D1 F3D9 F3D     
Otu01 1627 1935 8335 241

Arquivo de entrada 2

oi1 oi2    
lk8 po8    

Arquivo de saída

oi1 oi2 Group F3D0 F3D1 F3D9 F3D     
lk8 po8 Otu01 1627 1935 8335 241
    
por Giles 28.05.2016 / 03:17

1 resposta

1

No caso que você mostra, tudo o que você realmente precisa é

paste -d ' ' file2 file1

Você faz praticamente tudo o que você quer usando ordenadamente usando cut e paste (e alguma substituição de processo de shell), por exemplo. para produzir as duas primeiras colunas de file1 seguido pela segunda coluna de file2 seguido pelo restante de file1 e finalmente a primeira coluna de file2 você poderia fazer

paste -d ' ' <(cut -d ' ' -f 1,2 file1) <(cut -d ' ' -f 2 file2) <(cut -d ' ' -f 3- file1) <(cut -d ' ' -f 1 file2)

Ou (talvez com mais eficiência), você pode colar os dois arquivos como estão e canalizar o resultado para awk para selecionar colunas específicas em uma ordem específica:

paste -d ' ' file1 file2 | awk '{print $1, $2, $NF, $3, $4, $5, $(NF-1)}'

ou (se preferir), com perl

paste -d ' ' file1 file2 | 
  perl -alne 'print join " ", @F[0,1],@F[6],@F[2..4],@F[5]'
    
por 28.05.2016 / 15:58