运行 wc 并仅显示字数统计

运行 wc 并仅显示字数统计

我一直在尝试创建一个名为 的文件~/dictwords.txt,其中包含在该文件中找到的单词数/usr/share/dict/words

我已经创建了该文件,然后将其删除,因为我做错了,我最初执行了 echo 命令。然后我尝试了这个命令,非常兴奋,因为我认为我是正确的。

wc -w /usr/share/dict/words > ~/dictwords.txt

它仍然是错误的,我应该只有号码,没有文件名。

答案1

默认情况下,wc打印结果和文件名。如果您只想要结果,则必须wc从 stdin 读取输入:

</usr/share/dict/words wc -w > ~/dicwords.txt

使用当前的解决方案,您可以使用其他一些工具来仅获取 的结果wc,例如cut, awk, grep...

wc -w /usr/share/dict/words | cut -d' ' -f1 > ~/dicwords.txt

尽管这假设其实现wc不会在数字前添加空格字符,但并非每个wc实现都是如此。

答案2

如果您需要在脚本中使用字数统计,您可以将该值保存到变量中:

numWords=$(wc -w /usr/share/dict/words | tr -dc '0-9')

否则,您可以将其保存到文件中:

wc -w /usr/share/dict/words | tr -dc '0-9' > ~/dicwords.txt

答案3

该文件/usr/share/dict/words每行应包含一个单词。在某些系统上,我想象它可能每行包含一个“词典术语”,并且每个术语都可能由多个空格分隔的单词组成,但我自己从未见过这种情况。

您可以使用以下之一获得行数

  • wc -l </usr/share/dict/words(计算文件中换行符的数量)
  • sed -n '$=' /usr/share/dict/words(在最后一行,输出当前行号)
  • awk 'END { print NR }' /usr/share/dict/words(输入结束时,输出读取的记录(行)数)
  • grep -c '[^[:space:]]' /usr/share/dict/words(计算至少有一个非空格(类似)字符的行数)

其中,wc -l变体是最不可移植的,因为它可能在实际数字之前和/或之后输出或不输出额外的空格。

答案4

这是使用 的解决方案cat,它避免在结果后打印文件名。

cat /usr/share/dict/words | wc -w

相关内容