다음 텍스트가 포함된 파일이 있습니다.
we are going to write something 1 2 3
wc
9개 단어와 38자로 구성된 한 줄이 있다고 말해주세요.
a-z
26자( , 숫자나 공백 제외 등) 만 계산하고 싶습니다 .
이것이 내 현재 솔루션입니다.
grep -o [[:alpha:]] filename | wc -l
명령줄에서 이 작업을 수행하는 "더 나은" 방법이 있는지 알고 싶습니다.
답변1
알파벳이 아닌 문자를 모두 제거 tr
하고 결과 문자 수를 계산하겠습니다. tr
솔루션과 귀하의 솔루션을 모두 bash
내장 솔루션 에 전달하면 time
이 tr
솔루션이 적어도 내 시스템에서는 약 5배 더 빠르다는 것을 알 수 있습니다.
tr -cd '[:alpha:]' <filename | wc -m
답변2
awk
이 문제를 해결하는데도 사용할 수 있습니다 !
awk '{c+=gsub(s,s)}END{print c}' s='[[:alpha:]]' filename
답변3
노력하다:
LC_ALL=C grep -o [[:alpha:]] | sort -u | wc -l
LC_ALL=C.UTF-8
자신의 언어와 일치하도록 로케일을 변경하십시오 [a-zA-Z]
.