62
задан 19 July 2012 в 09:23

3 ответа

Кредиты к 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 (Бионический Бобр).

0
ответ дан 31 October 2019 в 13:50

Для получения точного счетчика символов строки используйте 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
3
ответ дан 31 October 2019 в 13:50

Я думал бы, что будет лучше использовать stat для нахождения размера файла, так как файловая система уже знает это, вместо того, чтобы заставить целый файл должным быть быть считан с awk или wc - особенно, если это - файл мульти-ГБ или тот, который может быть нерезидентным в файловой системе на HSM.

stat -c%s file

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

0
ответ дан 31 October 2019 в 13:50

Другие вопросы по тегам:

Похожие вопросы: