我一直在尝试创建一个名为 的文件~/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