![Linux fgrep 如何从大的“MIXED_WORDS”文件中提取“only_words_in_my_language”?](https://linux22.com/image/99593/Linux%20fgrep%20%E5%A6%82%E4%BD%95%E4%BB%8E%E5%A4%A7%E7%9A%84%E2%80%9CMIXED_WORDS%E2%80%9D%E6%96%87%E4%BB%B6%E4%B8%AD%E6%8F%90%E5%8F%96%E2%80%9Conly_words_in_my_language%E2%80%9D%EF%BC%9F.png)
我想要从一个大的“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
来执行此操作。