Jak dopasować słowo tylko między nawiasami
Wejście:
this is (test.com)
Wyjście pożądania:
test.com
Jak dopasować słowo tylko między nawiasami
Wejście:
this is (test.com)
Wyjście pożądania:
test.com
Odpowiedzi:
Oto kilka opcji, z których wszystkie drukują pożądany wydruk:
Używanie grepz -oflagą (drukuj tylko pasującą część linii) i wyrażeniami regularnymi zgodnymi z Perlem ( -P), które mogą wyszukiwać :
printf "this is (test.com)\n" | grep -Po '(?<=\().*(?=\))'
To wyrażenie regularne może wymagać wyjaśnienia:
(?<=\(): Jest to pozytywny wygląd , ponieważ ogólny format jest (?<=foo)bari będzie pasował do wszystkich przypadków barznalezionych zaraz po foo. W tym przypadku szukamy nawiasu otwierającego, więc używamy go, \(aby uciec.
(?=\)): To jest pozytywne spojrzenie w przyszłość i po prostu pasuje do zamykającego nawiasu.
-oOpcja grepprzyczyn go tylko wydrukować dopasowaną część każdej linii, więc patrzymy na to, co jest w nawiasach, a następnie usunąć je z sed:
printf "this is (test.com)\n" | grep -o '(.*)' | sed 's/[()]//g'
Parsuj wszystko za pomocą Perla:
printf "this is (test.com)\n" | perl -pe 's/.*\((.+?)\)/$1/'
Analizuj całość za pomocą sed:
printf "this is (test.com)\n" | sed 's/.*(\(.*\))/\1/'
Jednym z podejść byłoby użycie wyrażeń regularnych zgodnych z PCRE z grep:
$ echo "this is (test.com)" | grep -oP '(?<=\().*(?=\))'
test.com