Como mesclar colunas diferentes no mesmo arquivo?

1

Eu tenho três arquivos, conforme mostrado abaixo:

FILE 1: 
DATE      PGTO_CRED
20180801    50.00
20180802    150.00
20180803    130.00
20180804    110.00
20180805    200.00

FILE 2: 
DATE       PGTO_TOTAL
20180801    150.00
20180802    300.00
20180803    200.00
20180804    250.00
20180805    400.00

FILE 3: 
DATE       PGTO_FEE
20180801    35.00
20180802    10.00
20180803    25.00
20180804    140.00
20180805    135.00

Eu preciso que meu arquivo de saída seja algo como:

DATE    PGTO_CRED   PGTO_TOTAL  PGTO_FEE
20180801    50.00   150.00      35.00
20180802    150.00  300.00      10.00
20180803    130.00  200.00      25.00
20180804    110.00  250.00      140.00
20180805    200.00  400.00      135.00

Como faço isso no Redhat Linux?

    
por Marcos Vinicius Nunes 11.09.2018 / 18:48

2 respostas

5

Muitas ferramentas podem fazer isso, provavelmente awk é o primeiro que vem à mente, mas eu recomendo o comando join , especialmente se a entrada já estiver classificada (como no seu exemplo):

join file1 <(join file2 file3) | column -t

O column -t é apenas para alinhar bem a saída, você pode removê-lo.

Saída:

DATE      PGTO_CRED  PGTO_TOTAL  PGTO_FEE
20180801  50.00      150.00      35.00
20180802  150.00     300.00      10.00
20180803  130.00     200.00      25.00
20180804  110.00     250.00      140.00
20180805  200.00     400.00      135.00
    
por 11.09.2018 / 19:05
2

Algumas outras opções:

paste file{1,2,3} | awk '{print $1,$2,$4,$6}' | column -t

ou apenas awk:

awk '
    NR == FNR {line[FNR] = $0; next} 
              {line[FNR] = line[FNR] OFS $2} 
    END       {for (i=1; i<=FNR; i++) print line[i]}
' file{1,2,3} | column -t
    
por 11.09.2018 / 20:29