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

如何使用grep、sed、awk仅保留句子文件中存在于词典文件的单词

终端命令实现过滤句子仅保留词典内单词

推荐使用awk实现,逻辑清晰且执行效率高,即使处理大文件也能保持较好的性能,命令如下:

awk 'NR==FNR {dict[$1]=1; next} {line=""; for(i=1;i<=NF;i++) if(dict[$i]) line = line " " $i; sub(/^ /,"",line); print line}' dict.txt input.txt

你只需要把命令中的dict.txt替换为你的词典文件路径,input.txt替换为你的句子文件路径即可。

命令逻辑说明

  • NR==FNR {dict[$1]=1; next}:优先处理第一个输入的词典文件,将每行的单词作为键存入字典dict,值设为1标记存在,处理完词典文件的每一行后直接跳转下一行,不执行后续逻辑。
  • {line=""; for(i=1;i<=NF;i++) if(dict[$i]) line = line " " $i}:处理第二个输入的句子文件时,初始化空字符串存储当前行的过滤结果,遍历当前行的每一个单词,仅当单词存在于词典中时才拼接到结果字符串中。
  • sub(/^ /,"",line); print line:去掉结果字符串开头多余的空格,输出最终的过滤后行。

其他说明

如果你的句子单词之间不是用空格分隔,而是用其他符号(比如逗号、顿号等),可以在awk开头设置字段分隔符,比如要按逗号分割的话,命令开头改为awk -F, '...'即可。

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

相关产品推荐
方舟 Agent Plan

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

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