Como faço para corresponder a palavra apenas entre parênteses
Entrada :
this is (test.com)
Saída Desejada:
test.com
Como faço para corresponder a palavra apenas entre parênteses
Entrada :
this is (test.com)
Saída Desejada:
test.com
Respostas:
Aqui estão algumas opções, que imprimem a saída desejada:
Usando grepcom o -osinalizador (apenas imprimir parte correspondente da linha) e expressões regulares compatíveis com Perl ( -P) que podem fazer uma busca :
printf "this is (test.com)\n" | grep -Po '(?<=\().*(?=\))'
Esse regex pode precisar de algumas explicações:
(?<=\(): Este é um aspecto positivo , o formato geral é (?<=foo)bare corresponderá a todos os casos barencontrados logo após foo. Nesse caso, estamos procurando um parêntese de abertura, então usamos \(para escapar dele.
(?=\)): Esta é uma aparência positiva e simplesmente corresponde ao parêntese de fechamento.
A -oopção para fazer grepcom que apenas imprima a parte correspondente de qualquer linha, procuramos o que estiver entre parênteses e os excluímos com sed:
printf "this is (test.com)\n" | grep -o '(.*)' | sed 's/[()]//g'
Analise a coisa toda com o Perl:
printf "this is (test.com)\n" | perl -pe 's/.*\((.+?)\)/$1/'
Analise a coisa toda com sed:
printf "this is (test.com)\n" | sed 's/.*(\(.*\))/\1/'
Uma abordagem seria usar expressões regulares compatíveis com PCRE - Perl com grep:
$ echo "this is (test.com)" | grep -oP '(?<=\().*(?=\))'
test.com