On Linux you can use the grib_copy tool. This tools comes with ECMWF's ecCodes:
grib_copy grib_file_1 grib_file_2 ... output_grib_file
On Linux you can simply concatenate the GRIB files:
cat grib_file_1 grib_file_2 ... grib_file_N > output_grib_file
A way to merge netcdf files is using CDO merge:
cdo merge infile1 infile2 infile3 outfile |
or
cdo mergetime infile1 infile2 infile3 infile4 outfile |
Another option could be NCO (NetCDF Operators) ncrcat. Be sure that the files are unpacked before merging them. Here an example of merging for ERA5 nc files:
Download the data:
import cdsapi c = cdsapi.Client() c.retrieve( 'reanalysis-era5-single-levels', { 'product_type': 'reanalysis', 'variable': ['surface_latent_heat_flux', 'surface_sensible_heat_flux',], 'year': ['2018'], 'month': ['01'], 'day': ['31'], 'time': ['19:00','20:00','21:00','22:00','23:00'], 'format': 'netcdf', },'ERA5_slhf_sshf_01.nc') c.retrieve( 'reanalysis-era5-single-levels', { 'product_type': 'reanalysis', 'variable': ['surface_latent_heat_flux', 'surface_sensible_heat_flux',], 'year': ['2018'], 'month': ['02'], 'day': ['01'], 'time': ['00:00', '01:00', '02:00', '03:00', '04:00', '05:00',], 'format': 'netcdf', },'ERA5_slhf_sshf_02.nc') |
Set record dimension in each file (this is the dimension to merge along):
module load nco ncks --mk_rec_dmn time ERA5_slhf_sshf_01.nc ERA5_slhf_sshf_01_time_rec.nc ncks --mk_rec_dmn time ERA5_slhf_sshf_02.nc ERA5_slhf_sshf_02_time_rec.nc |
Data are still packed - need to be unpacked before merge:
ncpdq -U ERA5_slhf_sshf_01_time_rec.nc ERA5_slhf_sshf_01_time_rec_unpack.nc ncpdq -U ERA5_slhf_sshf_02_time_rec.nc ERA5_slhf_sshf_02_time_rec_unpack.nc |
Then they can be merged:
ncrcat ERA5_slhf_sshf_01_time_rec_unpack.nc ERA5_slhf_sshf_02_time_rec_unpack.nc ERA5_slhf_sshf_0102_time_rec_unpack.nc |