Подсчет количества символов в файл через скрипт



Я хочу проверить отсутствие символов в файле от начала до символа EOF. Может кто-нибудь сказать мне, как это сделать через shell script

635   7  

7 ответов:

это сделает это:

wc -c filename

Если вы хотите только счетчик без имени файла повторяется в выводе:

wc -c < filename

Edit:

использовать -m для подсчета символов вместо байтов (как показано в ответе Себастьяна).

#!/bin/sh

wc -m  | awk '{print }'

wc -m подсчитывает количество символов;awk команда выводит только количество символов, опуская имя файла.

wc -c даст вам количество байтов (которое может отличаться от количества символов, так как в зависимости от кодировки у вас может быть символ, закодированный на несколько байтов).

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

чтобы получить точное количество символов строки, используйте printf, а не echo, cat или запуск wc-c непосредственно в файле, потому что использование echo, cat и т. д. будет считать символ новой строки, который даст вам количество символов, включая символ новой строки. Таким образом, файл с текстом "hello" будет печатать 6, если вы используете echo и т. д., Но если вы используете printf, он вернет точное 5, потому что нет элемента новой строки для подсчета.

как использовать printf для подсчета символов в строки:

$printf '6chars' | wc -m
6

чтобы превратить это в скрипт, который вы можете запустить в текстовом файле для подсчета символов, сохраните следующее в файле с именем print-character-amount.sh:

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

chmod +x в файле print-character-amount.sh содержащий выше текст, поместите файл в свой путь (т. е. /usr/bin/ или любой каталог, экспортированный в качестве пути в вашем .bashrc file) затем запустить скрипт на текстовом файле типа:

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 - особенно если это файл с несколькими ГБ или тот, который может быть нерезидентом в файловой системе на HSM.

stat -c%s file

Да, я признаю, что это не учитывает многобайтовые символы, но добавлю, что OP никогда не уточнял, является ли это/была проблема.

Comments

    Ничего не найдено.