Как мне сопоставить слово только в скобках
Вход:
this is (test.com)
Желание выхода:
test.com
Как мне сопоставить слово только в скобках
Вход:
this is (test.com)
Желание выхода:
test.com
Ответы:
Вот несколько вариантов, каждый из которых выводит желаемый результат:
Использование grepс -oфлагом (только для печати совпадающей части строки) и Perl-совместимых регулярных выражений ( -P), которые могут сделать обходные пути :
printf "this is (test.com)\n" | grep -Po '(?<=\().*(?=\))'
Это регулярное выражение может нуждаться в пояснении:
(?<=\(): Это позитивный взгляд , общий формат (?<=foo)barи он будет соответствовать всем случаям, barнайденным сразу после foo. В этом случае мы ищем открывающую скобку, поэтому мы используем ее, \(чтобы избежать.
(?=\)): Это позитивный взгляд и просто соответствует закрывающей скобке.
-oВариант grepпричин его печатать только совпадающую часть какой - либо линии, поэтому мы ищем то , что в скобках , а затем удалить их sed:
printf "this is (test.com)\n" | grep -o '(.*)' | sed 's/[()]//g'
Разобрать все это с помощью Perl:
printf "this is (test.com)\n" | perl -pe 's/.*\((.+?)\)/$1/'
Разобрать все это с помощью sed:
printf "this is (test.com)\n" | sed 's/.*(\(.*\))/\1/'
Одним из подходов было бы использование регулярных выражений, совместимых с Perlgrep :
$ echo "this is (test.com)" | grep -oP '(?<=\().*(?=\))'
test.com