Linux 在不使用wc命令的情况下使用bash脚本获取文件字数?
是否有一种有效的方法可以使用Linux 在不使用wc命令的情况下使用bash脚本获取文件字数?,linux,bash,shell,debian,Linux,Bash,Shell,Debian,是否有一种有效的方法可以使用bash脚本来计算指定文件中的字数,而无需使用wc命令 最好是,可以用一个简单的循环来实现这一点吗 我很难想出一个方法来做到这一点,我已经在谷歌上检查过的所有地方都使用wc命令 谢谢 此模糊代码依赖于tr和dd,并计算压缩的空白,压缩的空白并不总是与字数相同,但距离不远: word_count() { tr -s '\n[:space:]' ' ' | tr -cd '[:space:]' | dd of=/dev/null 2&g
bash
脚本来计算指定文件中的字数,而无需使用wc
命令
最好是,可以用一个简单的循环来实现这一点吗
我很难想出一个方法来做到这一点,我已经在谷歌上检查过的所有地方都使用wc
命令
谢谢 此模糊代码依赖于
tr
和dd
,并计算压缩的空白,压缩的空白并不总是与字数相同,但距离不远:
word_count() { tr -s '\n[:space:]' ' ' | tr -cd '[:space:]' |
dd of=/dev/null 2>&1 | tail -1 | (read a b ; echo $a ) ; }
考虑manbash
中的字数,然后是实际的wc
结果:
man bash | word_count
man bash | wc --words
输出:
46139
46139
1
0
在这种情况下,它们是一样的。但是word\u count
在以下情况下容易出现off by one错误:
- 有空格,但没有字母数字:
输出:printf ' \n' | word_count
46139 46139
1
0
- 有一个词,但没有空格:
输出:printf 'foo' | word_count
46139 46139
1
0
,如中所述。另请参阅,以获取有关如何修改的说明,将每一行读入一个单词数组,并询问数组的长度。您的第四个单词“efficient”消除了使用解释语言(如*nix shell)编写的任何内容。编译的c-lang
程序将更加“高效”。同意以上所有意见,但如果你需要继续这个项目的某些原因以外的课程工作(唯一的原因我可以看到这一点)。请更新您的Q以说明为什么需要外壳解决方案。祝你好运A) 为什么??B) 您对word
有一个特殊的、可操作的定义吗?现在请用time man bash | w.
:)重复一遍。哦,几乎一模一样!