다음 패턴과 일치하는 문자열 목록을 얻고 싶습니다.
CLASS_NAME:"*"
이는 *
임의의 수의 문자를 나타냅니다.
나는 시도했다:
grep -o CLASS_NAME:\".*\" script.js
그리고
grep -o CLASS_NAME:\"*\" script.js
첫 번째 케이스는 일치하는 문자열 뒤의 전체 줄을 반환하고, 두 번째 케이스는 첫 번째 케이스에서 종료됩니다 "
. 일치하는 문자열만 반환하도록 하려면 어떻게 해야 합니까?
답변1
좋아요, 문제는 정규 표현식이 본질적으로 탐욕스럽기 때문에 한 줄에 원하는 것보다 더 많은 따옴표가 있다는 것입니다. 가능하다면 항상 가능한 한 많이 일치합니다.
따라서 해결책은 다음과 같이 두 개의 큰따옴표 사이에서만 일치하는지 확인하는 것입니다.
grep -o 'CLASS_NAME:"[^"]*"' script.js