파일에서 문자열의 발생 횟수를 계산합니다.

파일에서 문자열의 발생 횟수를 계산합니다.

아래와 같은 파일이 있습니다.

A      ctrl/bng/h2ert/scratch/TestAccountService.java
A      ctrl/bng/h2ert/scratch/TestAccount.java
A      ctrl/bng/h2ert/scratch/TestT.java
A      ctrl/bng/h2ert/scratch/TestAccountService.jpg
A      ctrl/bng/h2ert/scratch/TestService.txt
A      ctrl/bng/h2ert/scratch/TestAccountService.txt

.java위의 모든 파일 이름을 나열하고 싶습니다 .

Total java file 4

그러면 파일명이

답변1

$ grep -c '\.java$' file
3

플래그를 지정 -c하면 grep입력에서 패턴과 일치하는 행 수를 보고하게 됩니다.

이 패턴은 \.java$로 끝나는 모든 줄과 일치합니다 .java.

$ name="file"
$ printf 'Total number of Java files in "%s":\t%d\n' "$name" "$( grep -c -- '\.java$' "$name" )"
Total number of Java files in "file":   3

또는 (GNU grep또는 호환 사용):

$ grep -Hc '\.java$' file
file:3

또는 (여전히 GNU를 사용하고 있음 grep):

$ grep --label='Total java files in "file"' -Hc '\.java$' < file
Total java files in "file":3

답변2

기록을 위해, 역대 클래식 awk:

awk '/\.java$/{++c}END{print "Total java files:" c}' file

이러한 파일 이름도 인쇄하려면 {++c}로 변경할 수 있습니다 {print;++c}.

답변3

perl -lne '$a += s/\.java$//}{print"Total java file $ARGV: ", $a||0' java_file

s///명령은 대체 항목의 누적 개수를 반환 $a하고 마지막에 결과를 인쇄합니다. 이 $a||0표현식은 줄 끝에서 .java를 찾을 수 없을 때 사용됩니다.

perl -lne '$a += /\.java$/}{print"Total java file $ARGV: ", $a||0' java_file

이번에는 .java의 존재 여부를 확인하기 위해 비파괴 테스트를 수행합니다. 나머지 세부사항은 동일합니다.

관련 정보