![编写一个unix命令来计算文件前n行中的单词总数?](https://linux22.com/image/170800/%E7%BC%96%E5%86%99%E4%B8%80%E4%B8%AAunix%E5%91%BD%E4%BB%A4%E6%9D%A5%E8%AE%A1%E7%AE%97%E6%96%87%E4%BB%B6%E5%89%8Dn%E8%A1%8C%E4%B8%AD%E7%9A%84%E5%8D%95%E8%AF%8D%E6%80%BB%E6%95%B0%EF%BC%9F.png)
如何计算第一3
行的单词数?
输入:
There are many systems which are Unix-like in their architecture.
Not able among these are the GNU/Linux distributions.
The distinctions between Unix and Unix-like systems.
For distinctions between SUS branded UNIX architectures and other similar architectures, see Unix-like.
输出:28
答案1
使用 awk 一行:
awk ' { gsub("[-/]"," ") } NR<4 { w+=NF };END { print w }' <filename>
答案2
$ head -n 3 file | tr -s '/ -' '\n\n\n' | wc -l
28
如果您用空格、破折号和斜杠分隔单词,则该计数28
似乎是给定文本的前三行得到的计数。
上面的命令将前三行拆分为每行一个这样的单词,方法是用换行符替换每个空格、破折号和斜杠(并使用-s
with 选项删除多个连续的换行符tr
),然后计算此拆分产生的行数。
如果你使用更自然的head -n 3 file | wc -w
,你会得到25
单词。这是因为wc -w
仅计算由空格分隔的单词,并将Unix-Like
和GNU/Linux
视为单个单词。
答案3
使用 GNUgrep
或兼容:
<myfile head -n 3 | grep -aEo '\w+' | wc -l
字在这种情况下,是一个或多个字母数字字符或下划线的序列。
答案4
head -n 4 myfile | wc -w
myfile 是输入文件,4 是前 4 行