tente isto:
awk '{gsub("_|\[|\]","",$0); print $1 "-" $2;}' prova.txt
awk lê cada linha e usa "" (espaço em branco) como separador de campos, gsub remove chars: '_' '[' ']', então $ 1 e $ 2 contém token sem caracter indesejável.
Este script produzirá:
111-555
222-666
333-777
444-888
Se você acessasse exatamente _111_
e [8888]
como primeiro token e último token, tente isto:
awk '{gsub("_|\[|\]","",$0);if (NR == 1) print $1;}END{print $2}' prova.txt
Nesse caso, a saída será:
111
888
Aqui está o manual do awk onde você pode encontrar mais detalhes.