Como concatenar tabelas de diretórios diferentes com apenas um cabeçalho [fechado]

0

Eu tenho vários diretórios ("amazon", "niger", ...), nos quais tenho vários subdiretórios ("gfdl", "hadgem", ...), nos quais também tenho vários subdiretórios ("rcp8p5", "rcp4p5", ...). Nos últimos subdiretórios eu sempre tenho duas pastas ("histórico", "projetadas") que contêm milhares de tabelas com o mesmo quadro. Portanto, gostaria de concatenar essas tabelas (presentes nas duas pastas dos últimos subdiretórios) para ter apenas uma tabela grande com apenas um cabeçalho e não um cabeçalho sempre que uma tabela fosse concatenada. Alguém sabe como fazer isso?

Atualmente, estou usando a seguinte estrutura de loop:

#!/bin/bash
# usage:cat_dat dirname

data_dir=/scratch/01/stevens/climate_scenario/river

for river in tagus
  do
   for gcm in gfdl-esm2m hadgem2-es
     do
      for scenario in rcp8p5 rcp4p5 rcp6p0 rcp2p6
        do
          find "${data_dir}/${river}/${gcm}/${scenario}" name \*.dat -exec cat {} + >> "${data_dir}/${river}/${gcm}/${scenario}.dat"
      done
   done
done

mas não consigo me livrar do cabeçalho com isso! Qualquer ajuda é muito apreciada! Obrigado!

    
por steve 03.08.2015 / 17:45

1 resposta

2

Você está bem perto. Em vez de cat , você pode usar awk para pular a primeira linha e imprimir o restante.

find "${data_dir}/${river}/${gcm}/${scenario}" name \*.dat -exec awk 'NR > 1' {} + >> "${data_dir}/${river}/${gcm}/${scenario}.dat"

Este é um script awk bastante vazio porque depende do comportamento padrão. Não BEGIN ou END e use a ação padrão impressa.

Eu uso awk com mais frequência e é por isso que sugeri isso, mas você também pode ter o mesmo efeito com outras ferramentas:

com sed :

sed 1d

com final :

tail -n +2

É claro que você também pode usar perl, python ou outro idioma.

    
por 03.08.2015 / 18:25

Tags