Como você estava usando grep
com PCRE ( -P
), você pode usar esse padrão de Regex:
grep -Po '\d{1,2}x\K\d{2}(?= )' <<<"$pathname"
-
\d{1,2}x
corresponderá a um ou dois dígitos seguido porx
e, em seguida,\K
descartará a correspondência -
\d{2}
corresponderá exatamente a dois dígitos, o padrão lookahead positivo de largura zero(?= )
garante que tenhamos um espaço após os dois dígitos.
Então, isso deve atender aos seus requisitos.
Exemplo:
$ grep -Po '\d{1,2}x\K\d{2}(?= )' <<<'/a/long/path/of/mine/2x02 - bar.mp4'
02
$ grep -Po '\d{1,2}x\K\d{2}(?= )' <<<'/a/long/path/of/mine/34x12 - bar.mp4'
12
$ grep -Po '\d{1,2}x\K\d{2}(?= )' <<<'/a/long/path/of/mine/0x1 - bar.mp4'
## No match
$ grep -Po '\d{1,2}x\K\d{2}(?= )' <<<'/a/long/path/of/mine/00x1 - bar.mp4'
## No match