검색어가 임계값보다 많이 나타나는 파일 나열

검색어가 임계값보다 많이 나타나는 파일 나열

이런 명령이 있어요

rga --files-with-matches --count-matches --sort path -i -e "use cases?" -e "user stor(y|ies)" -e "Technical debt" -e "Code Quality" -e "software development" -e "Agile Manifesto"

출력은 다음과 같습니다

a1.pdf:18
a2.pdf:10
a3.pdf:14
....

여기에 :NUM일치 횟수가 있습니다.

10개 이상의 일치 항목이 있는 모든 파일을 원합니다(출력을 다른 명령으로 파이프할 수 있도록 콜론과 숫자가 없음). 좋다:

a1.pdf
a3.pdf
....

시도해 보았지만 .. | cut -d':' -f2숫자만 제공됩니다. .. | cut -d':' -f1파일 이름만 제공됩니다.

여기서 해결책은 무엇입니까?

답변1

이는 파일 이름에 문자가 포함된 경우에도 작동합니다 :. 두 개의 캡처 그룹을 사용합니다. 첫 번째 :그룹은 줄의 마지막 문자(파일 이름)까지(포함하지 않음) 모든 것을 캡처하고, 두 번째 그룹은 마지막 문자 :(개수) 뒤의 모든 숫자를 캡처합니다. 이 패턴과 일치하지 않는 입력 행은 무시됩니다.

$ rga ... | perl -n -E 'm/^(.*):(\d+)$/; say $1 if $2 > 10'
a1.pdf
a3.pdf

개행 문자가 포함된 파일 이름에는 작동하지 않습니다. 필요하고 rgaNUL로 구분된 출력을 생성할 수 있는 경우(예: 또는 유사한 옵션 사용 -0) -z이를 Perl의 옵션과 함께 사용하여 -0NUL로 구분된 입력을 읽을 수 있습니다.

답변2

그리고 awk:

... | awk -F: '$NF>10{ sub(/:[0-9]+$/, ""); print }'

레코드를 분할 :하고 마지막 필드가 10보다 큰지 테스트합니다. 조건이 true이면 :레코드 끝에서 최소한 하나의 숫자를 제거하십시오. (수정된) 기록을 인쇄합니다.

관련 정보