如何删除文本中的重复单词(相同的单词,但不同的情况)

时间:2010-06-23 18:24:53

标签: text

我有一个文本文件,其中包含很长的单词列表。其中一些通过案例重叠,如:

  • 诚实
  • 诚实

我想删除大写,并将下一个计为一个单词。 我怎么能这样做?

谢谢。

2 个答案:

答案 0 :(得分:0)

我试过了。

> cat test
Honesty
World
Hello
world
Hello
honesty

> sort -uf test
Hello
Honesty
World

> sort -uf test | tr A-Z a-z
 hello
 honesty
 world

感谢您的帮助。

答案 1 :(得分:0)

  1. 读一个字
  2. 将其转换为小写
  3. 使用某种set / hashtable类型检查重复项。
  4. 例如,在C ++中,您可以使用以下内容:

    #include <set>
    #include <string>
    #include <iostream>
    #include <algorithm>
    #include <ctype.h>
    
    struct lowercase { 
        std::string operator()(std::string const &s) const { 
            std::string ret(s);
            std::transform(&s[0], &s[s.length()-1], &ret[0], tolower);
            return ret;
        }
    };
    
    int main() {
        std::set<std::string> items;
    
        std::transform(
            std::istream_iterator<std::string>(std::cin), 
            std::istream_iterator<std::string>(), 
            std::inserter(items, items.begin()),
            lowercase());
    
        std::copy(items.begin(), items.end(), 
            std::ostream_iterator<std::string>(std::cout, "\n"));
        return 0;
    }