En splitant un log au format yaml, pour couper au "---" séparateur, j'ai atteint le "too many open files".

La solution est simple. Fermer le flux après y avoir écrit :

awk '{if (/---/) cpt++; 
          print $0 >> cpt+".txt"; 
          close (cpt+".txt")}'