Intereting Posts
Почему выражения подзаголовков в ~ / .zsvv не приводят к бесконечному регрессу? Как изменить параметры монтирования в установке OpenBSD? Как узнать UUID неблокированного устройства USB? сортировка при использовании числовой опции: «sort -k2,2 -nk6,6 foo» vs «sort -k2,2 -k6,6n foo» найти подкаталоги с наименьшим числом Yum возвращает ошибки при использовании Возврат к ошибке в shellscript вместо выхода при ошибке Fish Shell: как установить несколько переменных среды из файла с помощью экспорта smbpasswd не удалось установить новую Samba на новом Ubuntu 11.04 systemd: остановить процесс загрузки при сбое (на самом деле сделать остановку) Linux bash: поиск и замена в файле без выхода из строя Debian – ifconfig не показывает wlan0 stunnel – как настроить stunnel для обработки ssl и подключить к нему http? Разница между sh -x и ./ для выполнения скрипта Как отключить Ristretto от запуска, максимизированного всякий раз, когда я дважды щелкните изображение для просмотра?

Как получить количество байтов в одной строке файла?

Мне интересно, как я могу получить количество байтов только в одной строке файла.

Я знаю, что могу использовать wc -l чтобы получить количество строк в файле, а wc -c – общее количество байтов в файле. Однако я хочу получить количество байтов только в одной строке файла.

Как я смогу это сделать?

 sed -n 10p myfile | wc -c 

будет считать байты в десятой строке myfile (включая символ linefeed / newline).

Немного менее читаемый вариант,

 sed -n "10{p;q;}" myfile | wc -c 

(или sed '10!d;q' или sed '10q;d' ) перестанут читать файл после десятой строки, что было бы интересно для более длинных файлов (или потоков). (Спасибо Тиму Кеннеди и Питеру Кордесу за обсуждение, ведущее к этому.)

Существуют сопоставления производительности различных способов извлечения строк текста в линии cat X в строку Y в огромном файле .

Попробуй это:

 line=10 tail -n "+$line" myfile | head -n 1 | wc -c 

установите line на номер строки, которую нужно подсчитать.

Немного более простое использование awk :

 awk 'NR==10{print length($0)}' myfile