Кредиты к user.py и др.
<час>echo "ää" > /tmp/your_file.txt
cat /tmp/your_file.txt | wc -m
результаты в 3
.
В моем примере результат, как ожидают, будет 2
(дважды буква ä
). Однако эхо (или vi) добавляет разрыв строки \n
в конец вывода (или файл). Так два ä
и один разрыв строки Linux \n
считаются. Этому три года вместе.
Работа с каналами |
не является самым коротким вариантом, но таким образом, я должен знать меньше wc
параметры наизусть. Кроме того, cat
является пуленепробиваемым, по моему опыту.
Протестированный на Ubuntu 18.04.1 LTS (Бионический Бобр).
Для получения точного счетчика символов строки используйте printf, в противоположность эху, кошке или рабочему туалету-c непосредственно на файле, потому что использование эха, кошки, и т.д. будет считать символ новой строки, который даст Вам количество символов включая символ новой строки. Таким образом, файл с текстом 'привет' распечатает 6 при использовании эха и т.д., но если Вы будете использовать printf, это возвратит точные 5, потому что нет никакого элемента новой строки для подсчета.
, Как использовать printf для подсчета символов в строках:
$printf '6chars' | wc -m
6
Для превращения этого в сценарий можно работать на текстовом файле, чтобы считать символы, сохранить следующее в файле, названном print-character-amount.sh:
#!/bin/bash
characters=$(cat "$1")
printf "$characters" | wc -m
chmod +x на файле print-character-amount.sh содержащий выше текста, поместите файл в свой ПУТЬ (т.е./usr/bin/или любой каталог, экспортируемый как ПУТЬ в Вашем .bashrc файле) затем для запущения скрипта на типе текстового файла:
print-character-amount.sh file-to-count-characters-of.txt
Я думал бы, что будет лучше использовать stat
для нахождения размера файла, так как файловая система уже знает это, вместо того, чтобы заставить целый файл должным быть быть считан с awk
или wc
- особенно, если это - файл мульти-ГБ или тот, который может быть нерезидентным в файловой системе на HSM.
stat -c%s file
Да, я признаю, что это не составляет многобайтовые символы, но добавило бы, что OP никогда не разъяснялся, является ли это проблемой.