Aqui estão algumas opções, todas impressas na saída desejada:
-
Usando
grepcom 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)bare corresponderá a todos os casos debarencontrados 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
-oparagrepfaz 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/.*(\(.*\))//'