Assumindo um arquivo separado por tabulação, você pode usar o GNU awk:
gawk -F'\t' 'NR == FNR {count[$6][$4]++; next} length(count[$6]) > 1' file file
chr10 102979 103832 HSF1 305
chr10 102979 103832 HIF1AN 1 305
chr10 102979 103832 HSF1 305
chr10 103124438 103124851 HSF1 471
chr10 103124438 103124851 EGLN1 2 471
Isso passa pelo arquivo duas vezes: a primeira vez que conta quantos valores de $ 4 ocorrem para cada $ 6; a segunda vez para produzir um registro se houver mais de 1 $ 4 valores para esse $ 6.
Provavelmente, isso poderia ser feito em uma única passagem, às custas da complexidade, do uso da memória e possivelmente da perda da ordem original.
Mesma lógica em perl
perl -Mautodie -e '
open $f, "<", shift;
while (<$f>) {
@F = split /\t/;
$c{ $F[5] }{ $F[3] }++;
}
# re-process the file
seek $f, 0, 0;
while (<$f>) {
@F = split /\t/;
print if scalar keys %{ $c{$F[5]} } > 1;
}
' file