Linux 中多个 .txt 文件的字数统计

Linux 中多个 .txt 文件的字数统计

我需要使用 Linux CLI 在多个 .txt 文件中查找单词。目前我使用以下命令:

cat *.txt|wc -w

我创建了一个测试目录来练习该命令,它似乎对每个单独的 .txt 文件都有效,但对所有 .txt 文件都无法正确执行。我有一个包含 5 个文件的目录,其中 4 个文件各包含 5 个单词,1 个文件为空。对于单个文件,cat textfile.txt|wc -w它给出了正确的答案。但对于计数,它给出了 17,而它应该是 (4 乘以 5 + 0 乘以 0 =) 20 有人能告诉我为什么给出的计数是 17,而实际计数是 20 吗?

答案1

你可以运行

wc -w *.txt

这将为您提供每个文件的字数以及最后一行的总和。

事实证明,OP 的问题在于其中一个文件中缺少换行符。这导致cat *txt将多个单词合并为一个,从而导致计数错误。上面的命令在这种情况下更加可靠,因为它会单独处理每个文件。

答案2

最可能的解释是,文件的最后一行没有正确地以换行符结尾,因此当您输入cat它们时,下一个文件的第一个单词会附加到前一个文件的最后一个单词之后:

例如给定

steeldriver@pc:~$ printf 'foo\nbar\nbaz\nbam\nboo' | tee {1..4}.txt
foo
bar
baz
bam
boosteeldriver@pc:~$ printf '' > 5.txt

然后

steeldriver@pc:~$ wc -w {1..5}.txt
 5 1.txt
 5 2.txt
 5 3.txt
 5 4.txt
 0 5.txt
20 total

steeldriver@pc:~$ cat {1..5}.txt | wc -w
17

相关内容