현재 디렉토리의 모든 파일을 재귀적으로 검색하여 패턴을 찾은 다음 가장 높은 것부터 낮은 것 순서로 인쇄할 수 있는 방법이 있습니까?

현재 디렉토리의 모든 파일을 재귀적으로 검색하여 패턴을 찾은 다음 가장 높은 것부터 낮은 것 순서로 인쇄할 수 있는 방법이 있습니까?

지금까지의 코드는 다음과 같습니다.

grep -rc 'Author' $1

디렉터리의 모든 파일을 인쇄하고 인수로 사용합니다. 그러나 출력을 어떻게 정렬합니까(예:):

 - data1:43 
 - data2:56
 - data3:14

가장 높은 것부터 가장 낮은 것까지 목록을 입력하세요.

 - data2:56
 - data1:43
 - data3:14

답변1

grep -rc 'Author' $1 | sort -t : -k 2,2n

특정 행에서 키워드가 몇 번 반복되더라도 키워드가 포함된 행 수를 원하는 경우 괜찮습니다. 실제 단어 수를 원하면 이것을 사용해야합니다

echo $1:$(grep -o 'Author' $1|wc -l) | sort -t : -k 2,2n

grep에 대한 -o 옵션은 grep의 Gnu 버전에서 사용할 수 있을 가능성이 높습니다. 이전 레거시 시스템에서 제공하는 grep을 사용하는 경우 사용하지 못할 수 있습니다. 간단히 알려드리겠습니다.

답변2

높은 것부터 낮은 것 순으로 정렬:

grep -rc 'Author' $1 | sort -r -t ':' -k2,2n
  • -r가장 높은 것부터 가장 낮은 것까지 역순으로 정렬합니다.
  • -t구분자를 소개합니다.
  • -k정렬할 필드를 소개합니다. 필드는 정의된 구분 기호로 구분됩니다 -t. 이 구문은 2와 2 사이의 모든 필드(즉, 두 번째 필드만)를 기준으로 정렬하는 것을 의미합니다. 사전 편찬 순서 대신 숫자 값을 사용하는 방법입니다 n(예: 바로 10뒤에 오는 9것이 아니라 뒤에 옵니다 1).

관련 정보