나는 여러 세트로 tr을 사용하려고 노력하고 있는지 모르겠습니다.

StackOverflow https://stackoverflow.com//questions/22003685

  •  20-12-2019
  •  | 
  •  

문제

I :

tr -dc [:alpha:] < $fileDoc | wc -c
.

모든 문자를 계산하려면

tr -dc ' ' < $fileDoc | wc -c
.

모든 공간을 계산하려면

tr -dc '\n' < $fileDoc | wc -c
.

텍스트 문서의 모든 새 행을 계산합니다.

지금하려는 작업은 모든 일을 호출 할 때 문서의 다른 모든 문자를 계산하는 것입니다.

여기에 문서의 텍스트가 있습니다.

안녕하세요 이것은 테스트 텍스트 문서입니다.

123

!@#
.

[:alpha:], \n를 찾은 모든 것을 삭제하고 나머지 문자를 계산하는 방법이 있습니까?

도움이 되었습니까?

해결책

이것은 트릭을해야합니다

tr -d '[:alpha:] \n'  < $fileDoc | wc -c
.

또는 아마도 공백 정의에 탭을 포함시키려는 경우

tr -d '[:alpha:][:space:]'  < $fileDoc | wc -c
.

OP의 주석을 기반으로 알파벳순, 공백, 숫자 및 개행을 삭제하고 나머지 남은 문자를 계산합니다.

tr -d '[:alnum:][:space:]' < $fileDoc | wc -c
.

[:alnum:] 알파벳 및 숫자의 문자에 대한 계정을 설명합니다.[:space:]는 뉴라인을 포함한 모든 공백을 처리합니다

다른 팁

참조 용으로 여기에 게시하면 모든 작업을 원하는 경우이 awk 스크립트가 작동해야합니다.

awk -v FS='' '
{
    for(i=1; i<=NF; i++) {
        if($i ~ /[a-zA-Z]/) {alpha++};
        if($i == " ") {space++};
        if($i !~ /[A-Za-z0-9 ]/) {spl++}
    }
}
END {
    printf "Space=%s, Alphabets=%s, SplChars=%s, NewLines=%s\n", space, alpha, spl, NR
}' file
.

$ cat file
This is a text
I want to count
alot of $tuff
in 1 single shot
.

$ awk -v FS='' '
{
    for(i=1; i<=NF; i++) {
        if($i ~ /[a-zA-Z]/) {alpha++};
        if($i == " ") {space++};
        if($i !~ /[A-Za-z0-9 ]/) {spl++}
    }
}
END {
    printf "Space=%s, Alphabets=%s, SplChars=%s, NewLines=%s\n", space, alpha, spl, NR
}' file
Space=11, Alphabets=45, SplChars=1, NewLines=4
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top