이것이 나의 첫 번째 질문입니다! 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
-P
PCRE 지원을 활성화 하고 행의 일치하는 부분만 인쇄 -o
하도록 지시합니다 .grep
이것은(?<=foo)bar
활성 후면보기bar
: 바로 앞에 오는 경우에만 일치합니다 foo
. 그렇다면 bar(?=foo)
양수이다.시야bar
, 바로 뒤에 가 오는 경우에만 일치합니다 foo
. 따라서 우리가 사용하는 정규식은 .+?
a와 a() 사이에서 가장 짧은 문자열을 찾는 것입니다."name":"
",