Você obtém saída em branco para o primeiro registro, porque isso já foi lido e analisado quando você definiu FS
.
Você deve definir o separador de campo antes de ler e analisar o registro de entrada. Então, ou
awk 'BEGIN{ FS = "-" }{print $2}'
ou
awk -F'-' '{print $2}'
Como alternativa, você pode forçar o awk
a analisar novamente o registro atual depois de definir FS
:
awk '{FS = "-"; $0 = $0; print $2}'
Em relação ao seu pipeline, grep
não é necessário, awk
também pode fazer essa parte:
ls | awk -F'-' '/some-part-of-file/{print $2}'