Aqui estão algumas abordagens. Você não explicou o que você quer fazer com a string que você deseja extrair, então vou apenas imprimi-lo.
-
awk
com vários delimitadoresecho Sample_0000860156-001-out_20150224150524.xml.gz | awk -F '[_-]' '{print $2"-"$3}'
-
GNU
grep
echo Sample_0000860156-001-out_20150224150524.xml.gz | grep -oP '_\K.*(?=-)'
-
sed
echo Sample_0000860156-001-out_20150224150524.xml.gz | sed 's/.*_\([0-9]*-[0-9]*\)-.*//'
-
Perl
echo Sample_0000860156-001-out_20150224150524.xml.gz | perl -pe 's/.*_(.+?-.+?)-.*//'
Ou, com versões recentes do perl (obrigado @ksenoy ):
echo Sample_0000860156-001-out_20150224150524.xml.gz | perl -aF/[_-]/ -lne 'print $F[1]-$F[2]'
-
cut
echo Sample_0000860156-001-out_20150224150524.xml.gz | cut -d_ -f2 | cut -d- -f1,2