Ok, essa é uma solução alternativa que deve funcionar
#! /bin/bash
river=lobith_rhine
highest=1
for model in H08
do
for gcm in IPSL-CM5A-LR
do
for scenario in hist rcp8p5
do
RESULT=$(awk 'FNR==1 {print $4, FILENAME}' ${model}_${gcm}_${scenario}_${river}[1-9]/${model}_${gcm}_${scenario}_${river}[1-9].txt | sort -n -r| head -1)
highest="$(echo $RESULT | cut -d ' ' -f1 )"
hifile="$(echo $RESULT | cut -d ' ' -f2 )"
echo "highest was $highest in $hifile"
cp "$hifile" "/home/steve/high_test/${model}_${gcm}_${scenario}_${river}.txt"
done
done
done
A ideia está dentro do comando awk sobre um monte de arquivos,
awk 'FNR==1 {print $4, FILENAME}' *txt | sort -n -r| head -1 | cut -d ' ' -f2
onde:
- FNR é o número de registro de arquivo atual e FILENAME é o nome do arquivo atual
-
sort
é o comando de classificação -
cut
é o comando de corte
Ps > é possível pensar uma solução sem ordenar e cabeça mas só com o awk.
awk 'FNR==1 {i++; A[i]=$4; B[i]=FILENAME}
END{ c=A[1];d=B[1];
for (j=2;j<i;j++){
if (A[j]>c){c=A[j];d=B[j];}
}
print c,d ;
}' *txt