[linux] 일반 텍스트 파일에서 문자 발생 횟수

리눅스 / 터미널에서 문자 f가 일반 텍스트 파일에서 몇 번이나 나오는지를 세는 방법이 있습니까?



답변

이건 어때요:

fgrep -o f <file> | wc -l

참고 : 기억 / 복제 및 사용자 정의가 훨씬 쉬우 며 Vereb의 답변보다 약 3 배 빠릅니다 (죄송합니다.


답변

훨씬 더 빠름 :

tr -cd f < file | wc -c

검색된 문자가 4.9MB 및 1100000 인 파일 이있는이 명령의 시간 :

real   0m0.089s
user   0m0.057s
sys    0m0.027s

Vereb 응답에 대한 시간과 echo, cat, trbc같은 파일 :

real   0m0.168s
user   0m0.059s
sys    0m0.115s

와 롭 Hruska 응답 시간 tr, sed그리고 wc같은 파일 :

real   0m0.465s
user   0m0.411s
sys    0m0.080s

와 Jefromi 응답 시간 fgrepwc같은 파일 :

real   0m0.522s
user   0m0.477s
sys    0m0.023s


답변

echo $(cat <file>  | wc -c) - $(cat <file>  | tr -d 'A' | wc -c) | bc

여기서 A는 문자입니다

검색된 문자가 4.9MB 및 1100000 인 파일이있는이 명령의 시간 :

real   0m0.168s
user   0m0.059s
sys    0m0.115s


답변

캐릭터를 포함하는 줄 수를 세는 것만으로도 충분합니다.

grep -c 'f' myfile

그러나 동일한 줄에서 여러 번 발생하는 ‘f’를 단일 일치로 계산합니다.


답변

tr -d '\n' < file | sed 's/A/A\n/g' | wc -l

“A”두 문자를 문자로 바꾸고 “file”을 입력 파일로 바꿉니다.

  • tr -d '\n' < file: 줄 바꿈 제거
  • sed 's/A/A\n/g: “A”가 나타날 때마다 줄 바꿈을 추가합니다
  • wc -l: 줄 수를 센다

예:

$ cat file
abcdefgabcdefgababababbbba


1234gabca

$ tr -d '\n' < file | sed 's/a/a\n/g' | wc -l
9


답변