为什么要跑head
呢?无法保证文件中的字数会与字数一样多;实际上,几乎可以保证不会有(因为会有一些重复的单词)。如果要查看所有数据,则显示所有数据;不要过滤来自sort -nr
.
第一个tr
只需要一个斜线,我想。通常,您会将空格和标点符号映射到换行符(可以-s
选择tr
将相邻的换行符压缩为一个)。第一个中的斜线tr
算作第三个中的标点符号tr
,所以你在那儿并不明显。我想我希望看到类似的东西:
cat "$@" |
tr -cs '[:alpha:]' '\n' | # Convert any non-alpha character to newline
tr '[:upper:]' '[:lower:]' | # Case-convert to lower case
sort | uniq -c | sort -nr
注意使用"$@"
而不是$*
; 当您指定的文件名不包含空格(换行符、制表符等)时,没有区别;当他们这样做时,"$@"
表格是正确的,$*
而不是正确的,所以你最好总是使用"$@"
. 它的正确性远比它的正确性要高得多$*
。
对于我周围的一些 C 源代码,脚本的输出是:
246 n
217 i
153 int
141 list
124 if
118 t
103 char
99 a
97 size
90 buffer
89 context
82 d
81 void
79 include
79 h
78 s
65 for
62 j
55 ptr
54 r
54 const
53 static
53 sem
51 pthread
49 z
49 oldneedle
49 err
47 to
47 return
46 mutex
44 printf
43 error
43 c
请注意,“h”这个词出现的频率与“include”这个词一样频繁;这是有原因的!该词t
出现很多,但这是因为,例如,size_t
被过滤视为两个词。可以保留下划线;更改第一个tr
使用'[:alpha:]_'
(注意下划线)。您消除了数字,但如果您愿意,您也可以保留这些数字。