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 grep
z -o
flagą (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)bar
i będzie pasował do wszystkich przypadków bar
znalezionych 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.
-o
Opcja grep
przyczyn 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