Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 在不使用wc命令的情况下使用bash脚本获取文件字数?_Linux_Bash_Shell_Debian - Fatal编程技术网

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.
:)重复一遍。哦,几乎一模一样!