在Bash中提取文本文件去重单词 如何处理含's的单词拆分问题
单词提取命令调整方案
你可以调整正则匹配规则,新增撇号处理逻辑,修改后的命令如下:
# 存储文件中去重后的有效单词,大小写不敏感,自动忽略撇号及后续内容 WORDS=$(grep -o -E "[a-zA-Z']+" "$1" | sed -E "s/^'*//;s/'.*//" | grep -v '^$' | sort -u -f)
调整说明
- 修正了原正则仅匹配
\w的问题,将撇号纳入匹配范围,避免it's这类带撇号的单词被提前拆分 - 新增sed处理步骤,自动删除撇号及后续所有内容,仅保留撇号前的有效单词部分
- 新增空行过滤逻辑,避免处理过程中生成的无效空值被存入变量
- 保留原有的
sort -u -f逻辑,仍然满足大小写不敏感、自动去重的需求
内容的提问来源于stack exchange,提问作者Simos Neopoulos
相关产品推荐
相关产品推荐

