Получить количество пробелов в строке?

Как проверить, сколько белых пробелов ('', \t ) есть в первой строке файла?

5 Solutions collect form web for “Получить количество пробелов в строке?”

Прямым способом было бы выбрать только первую строку, отбросить из нее не-пробельные символы и подсчитать, сколько символов осталось:

 head -n 1 | tr -cd ' \t' | wc -c 
 awk '{print gsub("[ \t]",""); exit}' < file 

Или подсчитывать любые пробелы (символы горизонтального интервала), а не просто пробел и вкладку:

 awk '{print gsub("[[:blank:]]",""); exit}' < file 

Вы можете использовать GNU sed для замены head|tr combo (здесь, если POSIXLY_CORRECT не находится в среде):

 sed '1s/[^ \t]//g' |wc -c 

Примечание: sed всегда будет распечатывать новую строку, поэтому счет будет включать в себя новую строку. Как это работает : В sed вы можете дать команде s/// диапазон адресов, который здесь является только первой строкой. Глобально замените любые не-пробелы на nul и выведите результат на wc который учитывает символы.

Возможно, но уродливо, чтобы разобраться в чистой версии, которая делает подсчет.

Версия perl также достаточно проста:

 perl -lne 's/[^ \t]//g;print length($_);last' 

Принцип тот же. Параметр -l выводит конечную новую строку. Опция -n завершает сценарий в гигантском цикле while-readline. И last завершает этот цикл.

Решение awk Stéphane напомнило мне, что вы можете сделать это и с perl:

 perl -lne 'print s/[[:space:]]]//g;last' 

Или замените его на [[:blank:]] чтобы включить символы новой строки и другие непечатаемые символы.

 perl -nE '$n = tr/ / /; say $n; exit' file 

(работает с большинством снарядов) :

 IFS=; <file \ read -r IFS # read 1 line into $IFS set -- $IFS # split while eliding $IFS whitespace echo "$((${#IFS}-$#))" # $IFS len less $IFS field count 
  • Как считать события фразы в grep, игнорируя случай?
  • grep с количеством отдельных паттернов
  • Подсчитайте слова: что будет использовать меньше CPU, wc или perl-скрипт?
  • `ls / | wc -l` указывает больше строк, чем `ls /` показывает
  • как подсчитать общее количество слов в файле?
  • Непоследовательное поведение перенаправления ввода
  • Как я могу подсчитать количество пробельных символов в файле?
  • Почему так медленно?
  • wc -c дает мне дополнительное количество символов
  • Команда для печати количества файлов * .pdf в выбранном каталоге
  • Отображение количества байтов, слов и строк в файле
  • Linux и Unix - лучшая ОС в мире.