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\we, portanto, é impresso (por causa de-o) -
)5667/são encontrados b <\).+\/, mas porque estão em look-ahead(?= )eles não são reportados