답변:
이건 어때요:
fgrep -o f <file> | wc -l
참고 : 기억 / 복제 및 사용자 정의가 훨씬 쉬우 며 Vereb의 답변보다 약 3 배 빠릅니다 (죄송합니다.
\r
이나 \n
문자 가 필요한 경우 작동하지 않습니다 . 그 tr -cd f
대답은 효과가 있습니다.
a
, b
그리고 c
, 사용 egrep
: egrep -o 'a|b|c' <file> | wc -l
.
wc -c
과 같이 사용하지 마십시오 tr
. grep
행별로 출력하면 행 wc
끝이 문자로 계산되므로 문자 수가 두 배가됩니다.
\r
,하지만 \n
왜 사용하지 wc -l
않습니까?
훨씬 더 빠름 :
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
와 롭 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
a
, b
및 c
: tr -cd abc < file | wc -l
.
tr -cd abc < file | wc -c
대신 에 예상되지 않았습니다
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
cat
을 제거하면 파일 이름이 wc
및에 대한 인수로 제공되어 약 1/3 더 빠릅니다 tr
.
stdin
하지만 cat
ed 대신 파이프 될 수 있습니다 .tr -d 'A' < <file> | wc ...