2 coisas:
- Como afirmado pela @Rory, você precisa da opção
-o
, portanto, apenas a correspondência é impressa (em vez da linha inteira) - Além disso, você encontra a opção
-P
, para usar expressões regulares Perl, que incluem elementos úteis como Antecipe(?= )
e Olhe para trás(?<= )
, eles procuram por peças, mas não combinam e imprimem.
Se você deseja que apenas a parte dentro do parensis seja correspondida:
grep -oP '(?<=\/\()\w(?=\).+\/)' myfile.txt
se o arquivo contiver o sting /(a)5667/
, o grep imprimirá 'a', porque:
-
/(
são encontrados por\/\(
, mas porque eles estão em um look-behind(?<= )
eles não são reportados -
a
é correspondido por\w
e, portanto, é impresso (por causa de-o
) -
)5667/
são encontrados b <\).+\/
, mas porque estão em look-ahead(?= )
eles não são reportados