Development Tip

쉘 스크립트를 통해 파일의 문자 수 계산

yourdevel 2020. 11. 30. 20:05
반응형

쉘 스크립트를 통해 파일의 문자 수 계산


처음부터 EOF 문자까지 파일의 문자 수를 확인하고 싶습니다. 누구든지 쉘 스크립트를 통해이 작업을 수행하는 방법을 알려줄 수 있습니까?


이렇게하면됩니다.

wc -c filename

출력에서 반복되는 파일 이름없이 개수 만 원하는 경우 :

wc -c < filename

편집하다:

-m바이트 대신 문자를 계산하는 데 사용 합니다 (Sébastien의 답변에 표시됨).


#!/bin/sh

wc -m $1 | awk '{print $1}'

wc -m문자 수를 계산합니다. awk명령은 파일 이름을 생략하고 문자 수만 인쇄합니다.

wc -c 바이트 수를 제공합니다 (인코딩에 따라 문자가 여러 바이트로 인코딩 될 수 있으므로 문자 수와 다를 수 있음).


awk '{t+=length($0)}END{print t}' file3

문자열의 정확한 문자 수를 얻으려면 echo, cat 또는 파일에서 wc -c를 직접 실행하는 것과는 반대로 printf를 사용하십시오. echo, cat 등을 사용하면 개행 문자를 계산하여 다음을 포함한 문자 수를 제공합니다. 개행 문자. 따라서 'hello'라는 텍스트가있는 파일은 echo 등을 사용하면 6을 인쇄하지만 printf를 사용하면 계산할 줄 바꿈 요소가 없기 때문에 정확한 5를 반환합니다.

문자열 내에서 문자를 계산하기 위해 printf를 사용하는 방법 :

$printf '6chars' | wc -m
6

이것을 스크립트로 변환하려면 텍스트 파일에서 실행하여 문자를 계산할 수 있습니다. print-character-amount.sh라는 파일에 다음을 저장하십시오.

#!/bin/bash
characters=$(cat "$1")
printf "$characters" | wc -m

위의 텍스트를 포함하는 print-character-amount.sh 파일의 chmod + x, 파일을 PATH (예 : / usr / bin / 또는 .bashrc 파일에서 PATH로 내 보낸 디렉토리)에 배치 한 다음 텍스트 파일 유형에서 스크립트를 실행합니다.

print-character-amount.sh file-to-count-characters-of.txt

awk 만

awk 'BEGIN{FS=""}{for(i=1;i<=NF;i++)c++}END{print "total chars:"c}' file

쉘만

var=$(<file)
echo ${#var}

루비 (1.9+)

ruby -0777 -ne 'print $_.size' file

다음 스크립트는 테스트되었으며 예상되는 결과를 정확하게 제공합니다.

\#!/bin/bash

echo "Enter the file name"

read file

echo "enter the word to be found"

read word

count=0

for i in \`cat $file`

do

if [ $i == $word ]

then

count=\`expr $count + 1`

fi

done

echo "The number of words are $count"

stat파일 시스템이 이미 알고 있기 때문에 전체 파일을 읽 awk거나 ( wc특히 다중 GB 파일 인 경우)하는 것보다 파일 크기를 찾는 데 사용 하는 것이 더 낫다고 생각 했을 것입니다. HSM의 파일 시스템에 상주하지 않을 수 있습니다.

stat -c%s file

예, 멀티 바이트 문자를 설명하지 않는다는 점을 인정하지만 OP가 그것이 문제인지 여부를 명확히 밝히지 않았다고 덧붙일 것입니다.


user.py 등의 크레딧.


echo "ää" > /tmp/your_file.txt
cat /tmp/your_file.txt | wc -m

결과는 3.

In my example the result is expected to be 2 (twice the letter ä). However, echo (or vi) adds a line break \n to the end of the output (or file). So two ä and one Linux line break \n are counted. That's three together.

Working with pipes | is not the shortest variant, but so I have to know less wc parameters by heart. In addition, cat is bullet-proof in my experience.

Tested on Ubuntu 18.04.1 LTS (Bionic Beaver).

참고URL : https://stackoverflow.com/questions/5026214/counting-number-of-characters-in-a-file-through-shell-script

반응형