LINUX.ORG.RU

Подсчет символов в файле


0

1

Ребят, подскажите, пожалуйста как подсчитать количество символов в файле? wc -m $filename выдает 213 символов, Openoffice 209. Всего 6 текстовых файлов и ни в одном не показывает правильно. Я не прошу готовых решений, подскажите хотя бы что почитать на эту тему.

Текст одного из файлов: По укороченному маршруту данный транспорт будет курсировать 24 и 25 сентября с 10:00 до 16:00. Об этом сообщила пресс-служба мэрии. Ограничение связано с проведением ремонта плитки в районе кинотеатра Киномакс.

Ответ на: комментарий от adriano32

Да. Чтобы и офис и мой скрипт выдавали одно и то же. Не пойму откуда лишние символы появляются. их от 4 до 14 пока и зависимости не могу проследить ни от количества символов ни от количества строк

buganych
() автор топика
Ответ на: комментарий от buganych

лишние переводы строк, табуляции и тому подобное. wc их считает, OOO видимо нет. Хочешь посчитать только печатаемые символы, sed'ом убери из файла все пробелы, табы, переводы строк и проч., а потом натравливай wc.

adriano32 ★★★
()
Ответ на: комментарий от buganych

sed -e 's/^[ \t]*//g' -e 's/[ \t]*$//g' Не уверен но вроде так убираются все символы табуляции?

buganych
() автор топика
Ответ на: комментарий от buganych

Хм, а и правда: wc тупо сообщает размер текстового файла. А я-то думал, он действительно символы считает...

11.09.24 17:11 /tmp
wc -m 1
34 1
11.09.24 17:11 /tmp
wc -c 1
34 1
11.09.24 17:11 /tmp
ls -l 1
-rw-r--r-- 1 eddy eddy 34 сент. 24 17:11 1
11.09.24 17:12 /tmp
cat 1
превед
пока
hello
goodbye
2432134

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от buganych

А вот с символами что-то косяк. Могли бы разработчики добавить туда еще ключей, чтобы можно было не считать непечатаемые символы, пробелы и т.п.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от buganych

А подскажите, пожалуйста как использовать в sed`e (2)l -заменить непечатаемые символы на ASCII

buganych
() автор топика
Ответ на: комментарий от Eddy_Em

>Хм, а и правда: wc тупо сообщает размер текстового файла. А я-то думал, он действительно символы считает...

Во _всех_ манах coreutils и подобных утилит следует читать characters как bytes. Но всем как обычно пофиг.

x3al ★★★★★
()
Ответ на: комментарий от x3al

Ну, в принципе-то 1байт == 1 символ. Другое дело, что многие символы не считаются буквами или вообще печатными символами.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от buganych

Если хочешь, чтобы тебе помогли, не выкладывай на файлообменки, где надо ждать минуту загрузку.

А теперь признавайся, в чём набирал, что у тебя вендовые переносы 0x0D0A?

По укороченному маршруту данный транспорт будет курсировать 24 и 25 сентября с 10:00 до 16:00. Об этом сообщила пресс-служба мэрии.^M
Ограничение связано с проведением ремонта плитки в районе кинотеатра Киномакс.^M
Дважды ^M это и есть по два байта 0x0D0A, которые сканывают за лишние четыре символа, являясь вендовыми переносами вместо просто переноса 0x0A. В венде набирал?

adriano32 ★★★
()
Ответ на: комментарий от adriano32

нет, на сайте кодировка cp1251 может из за этого...Хотя перекодировал в utf8 с помощью iconv. Я работаю в виртуальной машине под Opensuse. А как бы эти переносы убрать? sed'oм не хочет фильтровать их

buganych
() автор топика
Ответ на: комментарий от buganych

>где koi8??? Там ему просто неоткуда появиться

Я про Eddy_Em

kss ★★★★★
()
Ответ на: комментарий от buganych

Ты совсем? то что ты попробовал, твой исходный файл не изменяло, а просто выдало в stdout результат. Для того я -i выше и передал sed'y. Так 211 будет.

adriano32 ★★★
()
Ответ на: комментарий от buganych

а что если взять и немного схалтурить: a=$(wc -l 2.txt) b=$(wc -m 2.txt) sed 's/^*2.txt//'<$a;sed 's/^*2.txt//'<$b; let c=$a+$b; echo «Количество символов=$c

buganych
() автор топика
Ответ на: комментарий от buganych

ошибка!!! a=$(wc -l 2.txt); b=$(wc -m 2.txt); sed 's/^*2.txt//'<$a; sed 's/^*2.txt//'<$b; let c=$b-2*$a; echo «Количество символов=$c

buganych
() автор топика
Ответ на: комментарий от buganych

ой, лучше уже считай вручную.

Покажи просто, без всяких >2a.txt

cat 2.txt

sed «s/[^M]//g» 2.txt ([Ctrl+V][Ctrl+M], а то ты наверняка текстом скопировал)

sed «s/[^M]//g» 2.txt | tr -d '\n'

adriano32 ★★★
()
Ответ на: комментарий от adriano32

buganych@linux-qvlt:~/Downloads> cat 2.txt;sed «s/[^M]//g» 2.txt;sed «s/[^M]//g» 2.txt | tr -d '\n' По укороченному маршруту данный транспорт будет курсировать 24 и 25 сентября с 10:00 до 16:00. Об этом сообщила пресс-служба мэрии. Ограничение связано с проведением ремонта плитки в районе кинотеатра Киномакс. и ****************__cat 2.txt;sed «s/[Ctrl+V][Ctrl+M]//g» 2.txt;sed «s/[^M]//g» 2.txt | tr -d '\n' По укороченному маршруту данный транспорт будет курсировать 24 и 25 сентября с 10:00 до 16:00. Об этом сообщила пресс-служба мэрии. Ограничение связано с проведением ремонта плитки в районе кинотеатра Киномакс. По укороченному маршруту данный транспорт будет курсировать 24 и 25 сентября с 10:00 до 16:00. Об этом сообщила пресс-служба мэрии. Ограничение связано с проведением ремонта плитки в районе кинотеатра Киномакс.

buganych
() автор топика
Ответ на: комментарий от adriano32

[code]buganych@linux-qvlt:~/Downloads> cat 2.txt По укороченному маршруту данный транспорт будет курсировать 24 и 25 сентября с 10:00 до 16:00. Об этом сообщила пресс-служба мэрии. Ограничение связано с проведением ремонта плитки в районе кинотеатра Киномакс.[/code] [code]buganych@linux-qvlt:~/Downloads> sed «s/[^M]//g» 2.txt

[/code] [code]buganych@linux-qvlt:~/Downloads> sed «s/[^M]//g» 2.txt | tr -d '\n' [/code] в последнем случае вообще ничего не показал

buganych
() автор топика

Полон тред программирования, долбаный стыд.

Чувак, никого не слушай, слушай меня.

cat text.txt | tr -d \\n\\r | wc -c

Всё.

thesis ★★★★★
()
Ответ на: комментарий от adriano32

buganych@linux-qvlt:~/Downloads> sed «s/[Ctrl+V][Ctrl+M]//g» 2.txt | tr -d '\n' По укороченному маршруту данный транспорт будет курсировать 24 и 25 сентября с 10:00 до 16:00. Обbuganych@linux-qvlt:~/Downloads> ремонта плитки в районе кинотеатра Киномакс.

buganych
() автор топика
Ответ на: комментарий от sdio

Выше пишут, что у чувака кои8. Я поверил, не лезть же на сраный депозит.

thesis ★★★★★
()
Ответ на: комментарий от adriano32

Понял [code]buganych@linux-qvlt:~/Downloads> sed 's/^M//g' 2.txt По укороченному маршруту данный транспорт будет курсировать 24 и 25 сентября с 10:00 до 16:00. Об этом сообщила пресс-служба мэрии. Ограничение связано с проведением ремонта плитки в районе кинотеатра Киномакс. [/code] [code]buganych@linux-qvlt:~/Downloads> sed 's/^M//g' 2.txt|tr -d '\n' По укороченному маршруту данный транспорт будет курсировать 24 и 25 сентября с 10:00 до 16:00. Об этом сообщила пресс-служба мэрии.Ограничение связано с проведением ремонта плитки в районе кинотеатра Киномакс.buganych@linux-qvlt:~/Downloads> [/code]

buganych
() автор топика
Ответ на: комментарий от sdio

Аа, это не про ТСа пишут. Ну да, я тоже лопух.

thesis ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.