7 ответов:
это сделает это:
wc -c filenameЕсли вы хотите только счетчик без имени файла повторяется в выводе:
wc -c < filenameEdit:
использовать
-mдля подсчета символов вместо байтов (как показано в ответе Себастьяна).
#!/bin/sh wc -m | awk '{print }'
wc -mподсчитывает количество символов;awkкоманда выводит только количество символов, опуская имя файла.
wc -cдаст вам количество байтов (которое может отличаться от количества символов, так как в зависимости от кодировки у вас может быть символ, закодированный на несколько байтов).
чтобы получить точное количество символов строки, используйте 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 -mchmod +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