Esse problema (suspeito de olhar para casa;) parece um trabalho para awk
awk '{ print > "FilePrefix."$1%YourModValueHere }'
por exemplo
awk '{ print > "bar."$1%3 }'
Atualizar para corrigir mal-entendidos:
1) define outputfilePrefix and modoloValue
2) load inputfile linewise as positional parameters
3) iterate over all entries in the first column
a) calculate CRC (cksum), and modolo CRC
b) output first positional parameter ($1) to file (prefix.modoloOfCRC )
c) shift positional parameters one to the left (discarding the current line in position 1)
código: basta digitar como linha única no bash
preFix="bar"; modolo=3;IFS=$'\n';set $(cat foo); for i in $(cut -f1 foo);do target=$(( $(echo $i | cksum | cut -d ' ' -f1;) % $modolo ));echo $1 >> $preFix.$target; shift; echo $target; done
melhor legível para entender
1) preFix="bar"; modolo=3;
2) IFS=$'\n';set $(cat foo);
3) for i in $(cut -f1 foo);do
target=$(( $(echo $i | cksum | cut -d ' ' -f1;) % $modolo ));
echo $1 >> $preFix.$target; shift; echo $target;
done
se você colocá-lo em um shellscript, você pode até mesmo canalizar o arquivo (com pouca modificação ..) via stdin