괄호 사이의 단어만 일치시키는 방법
입력하다:
this is (test.com)
예상 출력:
test.com
답변1
다음은 원하는 출력을 인쇄하는 몇 가지 옵션입니다.
이는 플래그 (행에서 일치하는 부분
grep
만-o
인쇄) 및 Perl 호환 정규식(-P
주위를 둘러보세요:printf "this is (test.com)\n" | grep -Po '(?<=\().*(?=\))'
이 정규식에는 설명이 필요할 수 있습니다.
(?<=\()
: 이것은활성 후면보기는 일반적으로 and 형식으로 되어 있으며 바로 뒤에 있는 모든 경우(?<=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/'
답변2
한 가지 방법은 다음과 같습니다.PCRE - Perl 호환 정규 표현식그리고 grep
:
$ echo "this is (test.com)" | grep -oP '(?<=\().*(?=\))'
test.com