Je n'obtient pas les mêmes résultats que toi, awk est plus rapide.
Sur un "Intel(R) Core(TM)2 Quad CPU Q9650 @ 3.00GHz" (on peut appeler ça un processeur veloce)
$ time awk -F# '!/^( *|\t*)?#/ && !/^$/{print $1}' /tmp/l 1>/dev/null
real 0m0.004s
user 0m0.003s
sys 0m0.000s
$ time cut -d# -f1 /tmp/l | grep -v $'^\t' |sed '/ ^\n/d; /^ *$/d' 1>/dev/null
real 0m0.005s
user 0m0.003s
sys 0m0.007s
Sur un petit "ARMv7 Processor rev 2 (v7l)" d'un Android
nessus one ou c'est bien plus flagrant :
$ time awk -F# '!/^( *|\t*)?#/ && !/^$/{print $1}' test* 1>/dev/null
real 0m 0.08s
user 0m 0.07s
sys 0m 0.01s
$ time cut -d# -f1 test* | grep -v $'^\t' |sed '/ ^\n/d; /^ *$/d' 1>/dev/null
real 0m 0.17s
user 0m 0.11s
sys 0m 0.00s