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

如何使用grep/sed/awk筛选单词数在X-Y区间内的文本行

筛选指定单词数范围文本行的实现方法

以下是通过常用命令行工具实现需求的方法,默认以空白字符(空格、制表符等)作为单词分隔符:

最简便方案:awk 实现

awk 内置字段计数变量NF直接对应每行的单词数,直接根据数值范围筛选即可,命令模板如下:

# 将X替换为最小单词数,Y替换为最大单词数,替换文件路径为你的实际文件
awk 'NF>=X && NF<=Y' 你的文件路径

针对你给出的示例文件,若需要筛选单词数在2到7之间的行,执行以下命令即可得到预期结果:

awk 'NF>=2 && NF<=7' atom.txt

运行后输出内容如下:

download kali linux virtualbox
how to install kali linux in vmware
install kali linux on virtualbox
kali linux
kali linux install virtualbox

grep 实现方案

通过正则匹配控制单词数量范围,命令模板如下:

# 最小单词数为X、最大为Y时,将{和}之间的第一个数改为X-1,第二个改为Y-1
grep -E '^(\S+\s+){X-1,Y-1}\S+$' 你的文件路径

对应示例的2-7单词数筛选命令:

grep -E '^(\S+\s+){1,6}\S+$' atom.txt

sed 实现方案

和grep正则逻辑一致,匹配到符合规则的行后打印即可,示例命令如下:

sed -nE '/^(\S+\s+){1,6}\S+$/p' atom.txt

补充说明

  • 如果文本中存在标点和单词绑定的情况(如linux,),系统会默认识别为一个单词。如果需要剥离标点后统计,可以先清洗文本再筛选,示例如下:
tr -d '[:punct:]' < atom.txt | awk 'NF>=2 && NF<=7'

内容的提问来源于stack exchange,提问作者Technology EFX TV

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 21:36:03