perl
tem melhor suporte a grupos de captura do que awk
e é mais adequado para essa tarefa.
perl -lane 'print $1 if /\/(.*)\//' script.m
stage17
perl -lane 'print $1 if /\/[^\d]*(\d+)[^\d]*\//' script.m
17
O mesmo pode ser realizado com awk
, no entanto, empregando gensub
:
awk '/\/.*\// {a=gensub(/.*\/(.*)\/.*/,"\1","g"); print a}' script.m
stage17
awk '/\/.*\// {a=gensub(/.*\/[^0-9]*([0-9]+)[^0-9]*\/.*/,"\1","g"); print a}' script.m
17
Como você não especifica quais devem ser os critérios de pesquisa, presumo que seja uma linha contendo duas barras; poderia ser a segunda linha, uma linha começando com load
, ou uma linha contendo samples123
como seu código awk
sugeriria.