【问题标题】:Get file word count using bash script WITHOUT wc command?使用没有 wc 命令的 bash 脚本获取文件字数?
【发布时间】:2023-03-17 23:55:01
【问题描述】:

有没有一种有效的方法来使用bash 脚​​本来计算指定文件中的字数而不使用wc 命令?

最好用一个简单的循环来做到这一点?

我在想办法做到这一点时遇到了麻烦,而且我已经在 Google 上检查过的所有地方都使用 wc 命令。

谢谢!

【问题讨论】:

  • 欢迎来到本站!查看tourhow-to-ask page,了解更多关于提出可以吸引高质量答案的问题的信息。您可以edit your question 包含更多信息。例如,您能否向我们展示一下您到目前为止所做的尝试?
  • 请注意stackoverflow.com/help/on-topic 中的“实用”标准。如果您要指定在没有标准工具的情况下实现某些东西,请描述导致此约束的实际限制。
  • 顺便说一句,如果我自己写这个,我会使用while read 循环,如BashFAQ #1 中所述。另请参阅BashFAQ #5,了解如何修改它以将每行读入单词数组,并询问数组的长度。
  • 您的第四个词“高效”消除了使用解释语言(如 *nix shell)编写的任何内容。编译后的c-lang 程序会更加“高效”。同意上述所有 cmets,但是如果您出于课程工作以外的其他原因需要继续这个项目(我能看到的唯一原因)。请更新您的 Q 以说明为什么需要 shell 解决方案。祝你好运!
  • A) 为什么? B) 你对word 有一个特殊的、可操作的定义吗?

标签: linux bash shell debian


【解决方案1】:

这个模糊代码依赖于trdd,并计算压缩的空格,这并不总是与单词的数量相同,但相差不远:

word_count() { tr -s '\n[:space:]'  ' ' |  tr -cd '[:space:]' | 
               dd of=/dev/null 2>&1 | tail -1 | (read a b ; echo $a ) ; }

考虑man bash 中的字数,然后是实际的wc 结果:

man bash | word_count
man bash | wc --words

输出:

46139
46139

在这种情况下,它们是相同的。但是word_count 在以下情况下容易发生错误:

  • 有空格但没有字母数字:

    printf ' \n' | word_count
    

    输出:

    1
    
  • 有一个单词,但没有空格:

    printf 'foo' | word_count
    

    输出:

    0
    

【讨论】:

  • 现在重复time man bash | w... :),拜托。哦,几乎一模一样!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-21
  • 2014-11-07
相关资源
最近更新 更多