不使用 wc 命令计算行数、单词数和字符数

不使用 wc 命令计算行数、单词数和字符数

我已经使用wc命令编写了程序,但我想知道如何在不wc使用 shell 脚本的文件中使用的情况下计算行数、单词数和字符数。

答案1

计算字节数(如wc -c

< file LC_ALL=C tr -c '\n' '[\n*]' | grep -c '^'

要计算换行符的数量(如wc -l):

< file LC_ALL=C tr -cd '\n' | grep -c '^'

对于单词(如wc -w),假设 POSIX 兼容,tr如 FreeBSD(而不是 GNU),并假设文件不包含非法字节序列:

< file tr -cs '[:space:]' '[x*]' | tr -cs x '[\n*]' | grep -c x

对于字符(如wc -m),具有相同的限制:

< file tr -c '\n' '[\n*]' | grep -c '^'

关于输出:

printf '\0foo\u2006and \r\fbar\nbaz'

它们分别给出 20、1、4、18,就像wc在 en_GB.UTF-8 语言环境中的 FreeBSD 系统上一样。

相关内容