Usando sed
com o agrupamento de padrões para capturar as partes desejadas:
your_command | sed -r 's/.*_T([0-9]+)_s([0-9]+)$/ /'
-
([0-9]+)
é o primeiro grupo capturado,[0-9]
corresponde a qualquer número entre0-9
e+
indica uma ou mais correspondências do token anterior[0-9]
neste caso -
([0-9]+)
é o segundo grupo capturado -
No padrão de substituição, os dois grupos capturados são referenciados por
e
, respectivamente.
Exemplo:
$ cat file.txt
exp_70_T8_s1
exp_71_T8_s5
exp_72_T8_s10
exp_73_T10_s1
exp_74_T10_s5
exp_75_T10_s10
$ sed -r 's/.*_T([0-9]+)_s([0-9]+)/ /' file.txt
8 1
8 5
8 10
10 1
10 5
10 10
Altere o padrão de substituição para atender sua necessidade, por exemplo, sem espaço:
your_command | sed -r 's/.*_T([0-9]+)_s([0-9]+)//' file.txt
Responda à pergunta editada:
Para _T
:
your_command | grep -Po '.*_T\K\d+' ## Using grep
your_command | sed -r 's/.*_T([0-9]+).*//' ## Using sed
Para _s
:
your_command | grep -Po '.*_s\K\d+$' ## Using grep
your_command | sed -r 's/.*_s([0-9]+)$//' # Using sed