답변:
다음은 몇 가지 옵션으로, 원하는 출력을 모두 인쇄합니다.
다음 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/'
한 가지 방법은 다음 과 함께 PCRE-Perl 호환 정규 표현식 을 사용하는 것 입니다 grep
.
$ echo "this is (test.com)" | grep -oP '(?<=\().*(?=\))'
test.com