#!/bin/bash scratch=tmp [ ! -d "$scratch" ] && mkdir $scratch rm -r $scratch/* SUFF="_cnt" IFS="," while read pol ch it rang do [ ! -d "$scratch/$pol" ] && mkdir $scratch/$pol [ ! -d "$scratch/$pol/`echo $ch | tr ' ' '_'`" ] && mkdir $scratch/$pol/`echo $ch | tr ' ' '_'` godir="$scratch/$pol/`echo $ch | tr ' ' '_'`" echo "$it" >> $godir/`echo $rang | tr ' ' '_'` done < $1 for dir in $scratch/* do for di in $dir/* do for file in $di/* do echo $(cat $file | sort -n | uniq -c | sed 's/^[ \t]*//') >> $file$SUFF done done done