获取字符串中空格字符的数量?

获取字符串中空格字符的数量?

如何检查\t文件第一行中有多少个空格(' ', )?

答案1

一种简单的方法是仅选择第一行,从中删除非空白字符,然后计算剩下的字符数:

head -n 1 | tr -cd ' \t' | wc -c

答案2

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

或者计算任何空白(水平间距字符),而不仅仅是空格和制表符:

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

答案3

您可以使用 GNU sed 来替换head|tr组合(这里假设 POSIXLY_CORRECT 不在环境中):

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

笔记:sed 总是会打印出换行符,所以您将包括换行符本身的计数。 这是如何运作的:在sed中,你可以给s///命令一个地址范围,这里只是第一行。全局将所有非空白替换为 nul 并输出wc计数字符的结果。

找出一个进行计数的纯 sed 版本是可能的,但很丑陋。

Perl 版本也很简单:

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

原理是一样的。该-l选项输出尾随换行符。该-n选项将脚本包装在一个巨大的 while-readline 循环中。并last终止该循环。

Stéphane 的awk解决方案提醒我你也可以使用 perl 来做到这一点:

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

或者将其替换为[[:blank:]]包含换行符和其他非打印字符。

答案4

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

相关内容