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.
-
awkcom vários delimitadoresecho Sample_0000860156-001-out_20150224150524.xml.gz | awk -F '[_-]' '{print $2"-"$3}' -
GNU
grepecho Sample_0000860156-001-out_20150224150524.xml.gz | grep -oP '_\K.*(?=-)' -
sedecho 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]' -
cutecho Sample_0000860156-001-out_20150224150524.xml.gz | cut -d_ -f2 | cut -d- -f1,2