Come posso abbinare la parola solo tra parentesi
Input:
this is (test.com)
Uscita del desiderio:
test.com
Come posso abbinare la parola solo tra parentesi
Input:
this is (test.com)
Uscita del desiderio:
test.com
Risposte:
Ecco alcune opzioni, che stampano tutte l'output desiderato:
Usando grepcon la -obandiera (stampa solo la parte corrispondente della linea) e le espressioni regolari compatibili Perl ( -P) che possono fare delle ricerche :
printf "this is (test.com)\n" | grep -Po '(?<=\().*(?=\))'
Quella regex potrebbe aver bisogno di qualche spiegazione:
(?<=\(): Questo è un aspetto positivo , il formato generale è (?<=foo)bare che corrisponderà a tutti i casi di bartrovati subito dopo foo. In questo caso, stiamo cercando una parentesi aperta, quindi usiamo \(per sfuggire.
(?=\)): Questo è uno sguardo positivo e corrisponde semplicemente alla parentesi di chiusura.
L' -oopzione per grepindurlo a stampare solo la parte corrispondente di qualsiasi riga, quindi cerchiamo qualsiasi cosa sia tra parentesi e quindi eliminiamo con sed:
printf "this is (test.com)\n" | grep -o '(.*)' | sed 's/[()]//g'
Analizza il tutto con Perl:
printf "this is (test.com)\n" | perl -pe 's/.*\((.+?)\)/$1/'
Analizza il tutto con sed:
printf "this is (test.com)\n" | sed 's/.*(\(.*\))/\1/'
Un approccio sarebbe quello di utilizzare le espressioni regolari compatibili con PCRE - Perl con grep:
$ echo "this is (test.com)" | grep -oP '(?<=\().*(?=\))'
test.com