如何 grep 查找所有少于 4 个字符的单词?

TIM*_*MEX 2 unix linux grep

我有一本字典,单词之间用换行符分隔。

Mic*_*eyn 5

你可以这样做:

egrep -x '.{1,3}' myfile
Run Code Online (Sandbox Code Playgroud)

这也会跳过空行,从技术上讲,空行不是单词。不幸的是,上面的正则表达式会将缩写中的撇号计为字母,并将连字符复合词中的连字符计为字母。在字母数如此少的情况下,连字符复合词不是问题,但我不确定您是否要计算缩写中的撇号,这是可能的(例如,I'm)。您可以尝试使用正则表达式,例如:

egrep -x '\w{1,3}' myfile
Run Code Online (Sandbox Code Playgroud)

...,但这只会匹配大写/小写字母,而根本不匹配缩写或连字符的复合词。