중복 없이 전체 디렉토리에서 사용되는 아이콘 목록을 표시하고 싶습니다. 예를 들어 다음과 같습니다.
<span class="icon icon-test"></span> (in test1.html)
<span class="icon icon-wrench"></span> (in wrench.html)
<span class="icon icon-test"></span> (in test3.html)
원하는 출력:
test
wrench
지금까지 나는 다음과 같은 아이디어를 시도했습니다.
grep -onr 'icon-.* "$' .
답변1
그리고 grep -P
:
grep -Phro 'icon-\K[^" ]+' . | sort -u
아니요 grep -P
:
grep -hro 'icon-[^" ]\+' . | cut -d- -f2 | sort -u
설명하다:
-P
BRE(기본 정규 표현식) 대신 Perl 호환 정규 표현식(PCRE) 사용-h
파일 이름을 인쇄하지 않음-r
모든 파일에 대해 재귀적으로 실행-o
전체 줄 대신 일치하는 항목만 출력[^" ]+
큰따옴표나 공백이 아닌 1개 이상의 문자와 일치합니다. 예를[a-z]+
들어 이름이 모두 az의 소문자인 경우 이를 변경할 수 있습니다. 참고:BRE
수량자: 를 이스케이프 처리해야 하기 때문입니다\+
.| cut -d- -f2
icon-
grep 출력에서 제거되었습니다. (이를 유지하려는 경우grep
사용할 수 있는 여러 가지 방법이 있습니다grep -o '\w\+$'
.)| sort -u
출력을 정렬하고 중복 항목을 제거합니다.