문제

Linux/Terminal에 계산할 방법이 있습니까? 일반 텍스트 파일에서 Char 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, tr 그리고 bc 동일한 파일의 경우 :

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

Rob Hruska를위한 시간 tr, sed 그리고 wc 동일한 파일의 경우 :

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

Jefromi의 대답 시간 fgrep 그리고 wc 동일한 파일의 경우 :

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"의 두 가지 발생을 문자로, "파일"의 두 가지 발생을 입력 파일로 대체합니다.

  • tr -d '\n' < file: Newlines를 제거합니다
  • 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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top