접두사로 시작하는 grep 문자열

접두사로 시작하는 grep 문자열

중복 없이 전체 디렉토리에서 사용되는 아이콘 목록을 표시하고 싶습니다. 예를 들어 다음과 같습니다.

<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

설명하다:

  • -PBRE(기본 정규 표현식) 대신 Perl 호환 정규 표현식(PCRE) 사용
  • -h파일 이름을 인쇄하지 않음
  • -r모든 파일에 대해 재귀적으로 실행
  • -o전체 줄 대신 일치하는 항목만 출력
  • [^" ]+큰따옴표나 공백이 아닌 1개 이상의 문자와 일치합니다. 예를 [a-z]+들어 이름이 모두 az의 소문자인 경우 이를 변경할 수 있습니다. 참고: BRE수량자: 를 이스케이프 처리해야 하기 때문입니다 \+.
  • | cut -d- -f2icon-grep 출력에서 ​​제거되었습니다. (이를 유지하려는 경우 grep사용할 수 있는 여러 가지 방법이 있습니다 grep -o '\w\+$'.)
  • | sort -u출력을 정렬하고 중복 항목을 제거합니다.

관련 정보