일반 텍스트 파일에서 숯의 발생을 계산합니다
문제
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
제휴하지 않습니다 StackOverflow