리눅스 / 터미널에서 문자 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
와 롭 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”두 문자를 문자로 바꾸고 “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