【发布时间】:2011-02-13 02:29:28
【问题描述】:
我有一本字典,其中的单词用换行符分隔。
【问题讨论】:
我有一本字典,其中的单词用换行符分隔。
【问题讨论】:
你可以这样做:
egrep -x '.{1,3}' myfile
这也会跳过空行,这在技术上不是单词。不幸的是,上述正则表达式会将缩写中的撇号计为字母以及连字符复合词中的连字符。在如此低的字母数下,连字符的复合词不是问题,但我不确定您是否想计算收缩中的撇号,这是可能的(例如,I'm)。您可以尝试使用正则表达式,例如:
egrep -x '\w{1,3}' myfile
...,但这只会匹配大写/小写字母,根本不匹配缩写或连字符的复合词。
【讨论】:
\w 在 GNU grep 中被搞砸了,因为像 ^\w 这样的模式在像 "β-oxidation" 和 "γ-aminobutyric" 这样的字符串上失败了。我会运行perl -CSD -ne 'print if /^\W*(\w\W*){1,3}$/',因为这样它会处理缩略词和连字符,但不会将非单词字符计入 3 个限制。如果您关心实际字母,则可以使用 \pL 和 \PL根据UTS#18 的要求,\w 和\W 的匹配范围比这甚至\p{Alphabetic} 更广泛。
像这样:
grep -v "^...." my_file
【讨论】:
试试这个正则表达式:
grep -E '^.{1,3}$' your_dictionary
【讨论】: