
Tengo varias tablas con el siguiente estilo de nomenclatura:
INSTITUTE_MODEL_SCENARIO_RIVER.txt
como ejemplos:
wbm_gfdl_rcp8p5_mississippi.txt
wbm_hadgem_rcp8p5_mississippi.txt
wbm_miroc_rcp8p5_mississippi.txt
matsiro_gfdl_rcp4p5_mississippi.txt
matsiro_ipsl_rcp8p5_mississippi.txt
Quiero crear una tabla de salida que agrupe las que tienen el nombre INSTITUTE
y SCENARIO
en el nombre del archivo. Para eso tengo el siguiente bucle:
for institute in wbm matsiro
do
for scenario in rcp4p5 rcp8p5
do
paste "$institute"_*_"$scenario"* > "$hyd_model"_"$scenario".txt
done
done
Desafortunadamente, al agregar las tablas a la primera, quiero deshacerme de las tres primeras columnas (para evitar redundancias). Sé hacer eso en la línea de comando:
paste wbm_gfdl_rcp8p5_mississippi.txt <(cut -f4 wbm_hadgem_rcp8p5_mississippi.txt) <(cut -f4 wbm_miroc_rcp8p5_mississippi.txt) > output.txt
Pero no logré implementar eso en el for
bucle. ¡Cualquier sugerencia es bienvenida!
Respuesta1
Interesante pregunta. Usaría una matriz para capturar los archivos relevantes y usaría una función recursiva para pegar cada archivo adicional:
paste_files() {
if [[ "$#" -eq 0 ]]; then
cat -
else
paste - <(cut -f4 "$1") | paste_files "${@:1}"
fi
}
for institute in wbm matsiro; do
for scenario in rcp4p5 rcp8p5; do
files=( "$institute"_*_"$scenario"* )
cat "${files[0]}" | paste_files "${files[@]:1}" > "$hyd_model"_"$scenario".txt
done
done