grep: 대괄호 사이의 항목을 일치시키기 위한 정규식

grep: 대괄호 사이의 항목을 일치시키기 위한 정규식

괄호 사이의 단어만 일치시키는 방법

입력하다: this is (test.com)

예상 출력: test.com

답변1

다음은 원하는 출력을 인쇄하는 몇 가지 옵션입니다.

  1. 이는 플래그 (행에서 일치하는 부분 grep-o인쇄) 및 Perl 호환 정규식(-P주위를 둘러보세요:

    printf "this is (test.com)\n" | grep -Po '(?<=\().*(?=\))'
    

    이 정규식에는 설명이 필요할 수 있습니다.

    • (?<=\(): 이것은활성 후면보기는 일반적으로 and 형식으로 되어 있으며 바로 뒤에 있는 모든 경우 (?<=foo)bar와 일치합니다 . 이 경우 여는 괄호를 찾고 있으므로 이스케이프를 사용합니다.barfoo\(

    • (?=\)): 이것은긍정적 인 전망단순히 닫는 괄호와 일치합니다.

  2. 옵션을 사용하면 모든 줄에서 일치하는 부분만 인쇄 -o하므로 grep괄호 안의 내용을 찾은 다음 다음을 사용하여 제거합니다 sed.

    printf "this is (test.com)\n" | grep -o '(.*)' | sed 's/[()]//g'
    
  3. Perl에서 전체 내용을 구문 분석합니다.

    printf "this is (test.com)\n" | perl -pe 's/.*\((.+?)\)/$1/'
    
  4. 전체 내용을 구문 분석하면 다음과 같습니다 sed.

    printf "this is (test.com)\n" | sed 's/.*(\(.*\))/\1/'
    

답변2

한 가지 방법은 다음과 같습니다.PCRE - Perl 호환 정규 표현식그리고 grep:

$ echo "this is (test.com)" | grep -oP '(?<=\().*(?=\))'
test.com

인용하다

관련 정보