2016-07-08 2 views
1

임 시작과 함께 bash와 나는 그것을 분석하는 .txt 파일에서 내 ip를 찾고 싶다. 이 파일의 일부의 예입니다 ". Direc INET :. 192 ****** Difus :"bash에서 두 패턴 사이에서 문자열을 추출하는 방법

나는 사이의 모든 텍스트를 검색하는에 생각 경로 : "와"INET " ". 지금까지 나의 가장 큰 접근 방식은 "grep inet"으로 전체 라인을 얻는 것이지만, ip로 전체 라인을 얻는 방법을 알 수는 없다.

감사합니다. 구출

답변

0

, 당신은 GNU grep-o-P 옵션을 활용할 수 있습니다

grep -oP '(?<= inet:)[^ ]+' file.txt 

예 :

$ grep -oP '(?<= inet:)[^ ]+' <<<'Direc. inet:192.****** Difus.:' 
192.****** 
  • -ogrep를 알려줍니다 각 행의 일치하는 부분 만 출력합니다.

  • -P은하지 않고보기 숨김 에 (이 경우, inet:) 하위 표현을 허용 같은 (?<= inet:) 등의 주장이 일치에서, 참여 지원 PCREs (펄 호환 정규 표현식)에 대한 지원을 활성화 은 (일치하는 문자열의 일부로)을 캡처했습니다.

  • [^ ]+inet: 이후의 모든 내용을 첫 번째 공백 문자까지 캡처합니다. 문자 집합 [^ ]은 공백 문자 (^)가 아닌 모든 문자와 일치하며 +은이 집합과 1 회 이상 일치합니다.

1

펄 :

perl -ne 'print $1, "\n" if /inet:([^ ]+)/' 
  • -n 라인별로 입력 라인을 판독하고;
  • [^ ]
  • 공백
  • +없는 문자가 한 번 이상
  • (...)
  • 는 캡처 그룹을 생성 있어야 수단 문자와 일치하는, 제 포획 기 $1
0

로서 참조 awkgrep을 조합 해보십시오. 해결책 아래에 도움이 될 수 있습니다 Link 1. 당신이 리눅스에있어 이후 Lin 2

+0

[링크 전용 답변] (http://meta.stackoverflow.com/tags/link-only-answers/info)을 피하십시오. – mklement0

관련 문제