查找文本中重复的单词

alt*_*are 8 linux text-editing bash regex spell-check

最常见的错别字之一是将同一个单词重复两次,如下所示。我需要一个自动程序来删除文本文件中的所有重复单词。对于现代编辑器或拼写检查器来说,这不应该是一个奇怪的功能,例如我记得 MS Word 几年前引入了这个功能!显然,我的操作系统(hun-spell)上的默认拼写检查不能这样做,因为它只能找到字典中没有的单词。

有一个对 linux 的特定文本编辑器编辑器(pluma/gedit2 或 Sublime-text)有效的解决方案和基于 bash 脚本的解决方案是可以的。

Cyr*_*rus 15

使用 GNU grep:

echo 'Hi! Hi, same word twice twice, as as here here! ! ,123 123 need' |  grep -Eo '(\b.+) \1\b'
Run Code Online (Sandbox Code Playgroud)

输出:

两次两次
作为
这儿这儿
123 123

选项

-E: 解释(\b.+) \1\b为扩展的正则表达式。

-o:只打印匹配行的匹配(非空)部分,每个这样的部分在单独的输出行上。

正则表达式

\b: 是零宽度字边界。

.+: 匹配一个或多个字符。

\1: 括号()标记一个捕获组,\1表示这里使用第一个捕获组的值。


参考:堆栈溢出正则表达式常见问题解答