如何仅使用一个标题连接不同目录中的表

如何仅使用一个标题连接不同目录中的表

我有几个目录(“amazon”,“niger”,...),其中有几个子目录(“gfdl”,“hadgem”,...),其中还有几个子目录(“rcp8p5” ”,“rcp4p5”,...)。在最后一个子目录中,我总是有两个文件夹(“历史”、“投影”),其中包含数千个具有相同框架的表格。因此,我想连接这些表(存在于最后一个子目录的两个文件夹中),以便每次连接表时只有一个只有一个标题的大表,而不是一个标题。有谁知道该怎么做?

我目前正在使用以下循环结构:

#!/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

但我无法摆脱标题!非常感谢任何帮助!谢谢!

答案1

你很接近。而不是cat您可以使用awk跳过第一行并打印剩余的行。

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

这是一个非常空的awk脚本,因为它依赖于默认行为。没有 BEGIN 或 END 并使用默认操作打印。

我使用awk更频繁,这就是我建议它的原因,但您也可以使用其他工具获得相同的效果:

sed:

sed 1d

尾巴:

tail -n +2

当然你也可以使用 perl、python 或其他语言。

相关内容