我有几个目录(“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 或其他语言。