Grep의 첫 번째 발생과 다른 첫 번째 발생 사이

Grep의 첫 번째 발생과 다른 첫 번째 발생 사이

이것이 나의 첫 번째 질문입니다! grep을 많이 시도했지만 여전히 원하는 것을 찾지 못했습니다.

자, 여기 있습니다.

내 Ubuntu 컴퓨터에 다음 내용이 포함된 파일이 많이 있습니다.

{"group":{"name":"Subdivision01","id":"94827-20934-23085"}*manytext*
{"group":{"name":"Department28","id":"11672-23517-87241"}*manytext*
{"group":{"name":"Division07","id":"86267-91634-22516"}*manytext*

난 그냥 가져가고 싶어Subdivision01그리고Division05그리고Departement14(길이가 다름)

그래서 이것은 의미한다~ 사이이것처음발생 ":"처음일어난다 "," ==> 어떻게 해야할지 모르겠어요...

당신의 도움을 주셔서 감사합니다:)

답변1

한 가지 접근 방식은 Perl 호환 정규식을 사용하는 것입니다.주위를 둘러보세요:

$ grep -oP '(?<="name":").+?(?=",)' file
Subdivision01
Department28
Division07

-PPCRE 지원을 활성화 하고 행의 일치하는 부분만 인쇄 -o하도록 지시합니다 .grep

이것은(?<=foo)bar활성 후면보기bar: 바로 앞에 오는 경우에만 일치합니다 foo. 그렇다면 bar(?=foo)양수이다.시야bar, 바로 뒤에 가 오는 경우에만 일치합니다 foo. 따라서 우리가 사용하는 정규식은 .+?a와 a() 사이에서 가장 짧은 문자열을 찾는 것입니다."name":"",

관련 정보