grep : 괄호 사이에 일치하는 정규 표현식 만


21

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

입력 : this is (test.com)

욕망 출력 : test.com


1
일치하는 'grep'정규식을 찾고 있습니까, 또는 예를 들어 출력을 생성하기위한 'sed'대체 명령을 찾고 있습니까?
rickhg12hs 23.45의

답변:


28

다음은 몇 가지 옵션으로, 원하는 출력을 모두 인쇄합니다.

  1. 다음 grep과 같이 할 수있는 -o플래그 (라인의 일치하는 부분 만 인쇄) 및 Perl 호환 정규 표현식 ( -P)과 함께 사용 :

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

    그 정규 표현식에는 몇 가지 설명이 필요할 수 있습니다.

    • (?<=\(): 이것은 긍적적인 비하인드 이며, 일반적인 형식이며 (?<=foo)bar, 그 bar직후 에 발견 된 모든 경우와 일치합니다 foo. 이 경우, 우리는 여는 괄호를 찾고 있으므로 \(그것을 피하기 위해 사용 합니다.

    • (?=\)): 이것은 긍정적 인 예견 이며 닫는 괄호와 일치합니다.

  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/'
    

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.