combina o arquivo multi da coluna selecionada

1

Eu tenho vários arquivos (~ 15), cada um com dados de várias colunas (separador separado). Por exemplo:

Arquivo1

aa1    399     1815
aa2    1908    4064
aa3    4523    5656

Arquivo2

bb1    5304317    5305057
bb2    5305057    5305824
bb3    5306871    5307875

Eu quero ler a segunda coluna de cada arquivo e imprimi-los um ao lado do outro, para criar uma saída de 15 colunas. Por exemplo:

Resultado

399     5304317    7526    12455
1908    5305057    8195    14538
4523    5306871    9216    15150

Cada coluna é de arquivo diferente. Observe que a primeira coluna de Saída é a segunda coluna de Arquivo1 , a coluna sectond de Saída é a segunda coluna de Arquivo2 .

Eu pensei em usar colar. Mas coloca todos os dados de cada arquivo de entrada. Como isso pode ser feito?

    
por Nirvana 07.12.2015 / 19:59

3 respostas

0

Para 3 arquivos, cada um com 3 colunas, você pode usar algo como:

pr -m -t -s file1 file2 file3|awk '{printf("%s\t%s\t%s\n",$2,$5,$8)}'

Você também pode invólucros com algo que contaria o número de arquivos e campos por arquivo, mas isso deve dar a você um começo.

    
por 07.12.2015 / 21:09
0

Se você está bem, não fazendo isso como uma linha que você poderia fazer

for file in $(ls File*); do
  awk '{print $2}' < $file > $file.col2
done
pr -m -s *.col2 > merged.txt
rm -f *.col2
    
por 07.12.2015 / 21:53
0

Talvez paste possa ser adequado, afinal?

$ paste <(cut -f2 file1) <(cut -f2 file2) <(cut -f2 file3) <(cut -f2 file4)
399     5304317 7526    12455
1908    5305057 8192    14538
4523    5306871 9216    15150
$
    
por 07.12.2015 / 23:42