파일의 공백 문자 수를 계산하는 방법은 무엇입니까?

파일의 공백 문자 수를 계산하는 방법은 무엇입니까?

파일의 공백 문자 수를 계산하고 싶습니다. 내가 생각할 수 있는 최선은 다음과 같습니다.

tr -cd [:space:] < my_file | wc

더 깨끗한 방법이 있습니까?

답변1

tr -cd '[:space:]' < my_file | wc -m

작동합니다. 그러나 GNU에서는 tr문자당 단일 바이트 로케일(일반적으로 UTF-8 로케일에서는 작동하지 않음)이나 UTF-8 로케일의 ASCII 입력에서만 작동합니다.

따옴표가 없으면 [:space:]csh, tcsh 또는 zsh에서 오류 메시지가 표시되며(아래 조건이 충족되지 않는 한) 대부분의 쉘에서는 현재 디렉토리에 , 또는:,space[:space:]

또한 wc문자는 기본적으로 계산되지 않습니다(바이트, 단어 및 줄바꿈은 옵션이 제공되지 않을 때만 계산됩니다).

GNU를 사용하면 awk다음을 사용할 수 있습니다.

awk -v RS='[[:space:]]' 'END{print NR}'

예:

$ printf '\0\u2006\t\r\n' | awk -v RS='[[:space:]]' 'END{print NR}'
4

(U+2006의 경우1인당 6명이 이용할 수 있는 공간, TAB, CR 및 NL 문자는 모두 내 로케일에서 공백으로 분류됩니다.

답변2

#!/bin/bash

file=`cat $1`

length=`cat $1 | wc -m` // Count the charater
count=0
for ((i = 0 ;i < $length;i++)) do //loop to the end of the string

    if [ "${file:$i:1}" == "$2" ] //Look only character by character (select some characters of the String, (:$i:1) is the range of the choosen characters
    then
        count=$((count + 1))

    fi
done    
echo $count

//test.txt = "Is there a neater way?"
#./CountChar test.txt " "
>>> 4

이것은 "다른" 방법입니다..x), 마음에 드셨으면 좋겠습니다!

관련 정보