Aqui estão algumas opções, todas impressas na saída desejada:
-
Usando
grep
com o sinalizador-o
(somente parte correspondente da linha de impressão) e expressões regulares compatíveis com Perl (-P
) que podem fazer lookarounds :printf "this is (test.com)\n" | grep -Po '(?<=\().*(?=\))'
Esse regex pode precisar de algumas explicações:
-
(?<=\()
: esse é um aspecto positivo , o formato geral é(?<=foo)bar
e corresponderá a todos os casos debar
encontrados logo apósfoo
. Neste caso, estamos procurando por um parêntese de abertura, então usamos\(
para escapar dele. -
(?=\))
: esta é uma visão positiva e simplesmente corresponde ao parêntese de fechamento.
-
-
A opção
-o
paragrep
faz com que ela imprima apenas a parte correspondente de qualquer linha, portanto, procuramos o que está entre parênteses e, em seguida, excluímos comsed
:printf "this is (test.com)\n" | grep -o '(.*)' | sed 's/[()]//g'
-
Analise tudo com o Perl:
printf "this is (test.com)\n" | perl -pe 's/.*\((.+?)\)/$1/'
-
Analise tudo com
sed
:printf "this is (test.com)\n" | sed 's/.*(\(.*\))//'