使用正则表达式搜索单词列表。找到 2 个字母的单词而不是 3 个。为什么?

使用正则表达式搜索单词列表。找到 2 个字母的单词而不是 3 个。为什么?

我正在研究正则表达式,我被难住了。到目前为止,这是我的过程......

我下载了这个文件。

wget http://www.mieliestronk.com/corncob_lowercase.txt
mv corncob_lowercase.txt words.txt

我想要全部 3 个字母的单词...

grep '^...$' words.txt

这确实找到了“abe”

grep '^abe.$' words.txt

这没有找到“abe”

grep '^abe$' words.txt

这确实在 Arch Linux 附带的库中找到了“abe”。

grep '^abe$' /usr/share/dict/cracklib-small

我被这个问题难住了。

答案1

$ file corncob_lowercase.txt 
corncob_lowercase.txt: ASCII text, with CRLF line terminators

DOS 行结尾可能是问题的根源。 CR 至少出于某些目的而被视为一个字符。

在 ing 之前先运行dos2unix, 或tr -d '\r', grep

相关内容