You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅使用grep和wc命令统计文件中唯一单词的数量?

仅用grep和wc统计文件中唯一单词数量的可行方案?

问题描述

需求是仅使用grep和wc命令统计文件中唯一单词的数量。此前尝试过以下两种方法,但不符合仅用grep和wc的要求:

grep -oE '\w+' 'file.txt' | sort | uniq | wc -l
grep -oE '\w+' 'file.txt' > temp.txt && awk '!seen[$0]++' temp.txt | wc -l

示例输入文件内容:

one two three four five
two four one six
eight three seven five

预期输出:unique word count: 8

疑问:是否可以先通过grep -oE '\w+' file.txt提取单词,再逐个将单词与空文件匹配,若文件中无该单词则追加,以此实现去重?能否仅用grep完成此逻辑?


结论:仅靠grep和wc无法实现唯一单词统计

grep是基于模式匹配的文本搜索工具,本身不具备状态记忆、循环判断或文件写入的能力,而去重的核心是需要跟踪已经出现过的单词——这一步必须依赖shell的循环逻辑、或者sort/uniq/awk这类具备状态记录的工具,仅用grep做不到。

对你提出的去重逻辑的回应

你设想的“逐个匹配空文件并追加未出现单词”的逻辑,本质上需要三个核心步骤:

  1. 遍历每个提取出的单词
  2. 检查该单词是否已存在于临时文件中
  3. 若不存在则追加写入

其中,遍历、条件判断和文件写入都是shell本身的功能,而非grep的能力。即使你用grep来完成“检查单词是否存在”的步骤,整个流程也必须依赖shell循环,还需要用到echo之类的写入命令,已经超出了“仅用grep和wc”的限制。

补充说明

如果严格限制只能使用grep和wc,目前没有可行的方法完成唯一单词统计。因为去重环节必须依赖具备去重/状态记录能力的工具,而grep仅能做模式匹配,wc仅能做计数,两者都不具备去重所需的状态跟踪能力。

内容的提问来源于stack exchange,提问作者anonymous

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 19:58:13