Linux fgrep 如何从大的“MIXED_WORDS”文件中提取“only_words_in_my_language”?

Linux fgrep 如何从大的“MIXED_WORDS”文件中提取“only_words_in_my_language”?

我想要从一个大的“MIXED_WORDS(160mb)”文件中提取“only_words_in_my_language(900kb)”,为此我使用了下面的语法,但结果很差:

fgrep -w -f "only_words_in_my_language.txt" "MIXED_WORDS_from_all_over_the_world" > extracted_word_of_my_country_only.txt

这就是为什么我想嗯……“匹配”整个单词,以获得更好的结果例如,这是我的语言中的一个单词:

Maimuta - 7 个字母长度,如果我匹配整个单词,结果可能是:

maimuta@123
maimuta2016!
Maimuta01!
maimuta@123456

如果我匹配6个字母res。可能:

maimut
maimutoi1
Maimutareala01!

所以我的问题是如何做到这一点?如何匹配整个单词正则表达式或Linux的东西请谢谢大家祝你好运!

我尝试过这个,但是不起作用:

fgrep -iowf "my_lang_dict.txt" "mixed_words" > my_lang_unique-words.txt

我的lang.dict.txt(900kb)和mixed_file(64 mb),grep说:内存耗尽

想象一下你的保加利亚语、俄语,你想从整个 wordl 文本文件中的大混合单词中“仅”提取你所在国家语言的单词。你会怎么做?你需要一个“你的国家” '' 字典对吗?然后将您国家字典中的所有单词与混合单词进行比较,我认为最好的结果是......当您匹配整个单词时!

答案1

正如错误消息告诉您的那样,您没有足够的内存。系统正在构建一个正则表达式来匹配 900KB 文件中的所有单词。 mix_word 文件的大小并不重要。该错误消息可能会产生误导,因为它的真正含义可能是regular expression too complicated.

您应该能够将 lang.dict.txt 分成更小的块。您可以使用 unix 命令split来执行此操作。

相关内容