代码之家  ›  专栏  ›  技术社区  ›  lzap

如何在Unix中将文本文件转换为小写(但使用UTF-8)

  •  7
  • lzap  · 技术社区  · 14 年前

    我需要将所有文本转换为小写,但不使用传统的“tr”命令,因为它不能正确处理UTF-8语言。

    有什么好办法吗?我需要一些Unix过滤器,以便在管道中处理这个问题。

    2 回复  |  直到 13 年前
        1
  •  13
  •   aioobe    14 年前

    GNUSED应该能够处理Unicode。尝试

    $ echo 'Some StrAngÉ LeTTeRs 123' | sed -e 's/./\L\0/g'
    some strangé letters 123
    
        2
  •  3
  •   Michał Niklas    14 年前

    如果您可以使用python,那么这样的代码可以帮助您:

    import sys
    import codecs
    
    utf8input = codecs.getreader("utf-8")(sys.stdin)
    utf8output = codecs.getwriter("utf-8")(sys.stdout)
    
    utf8output.write(utf8input.read().lower())
    

    在我的Windows计算机上(抱歉:)我可以将其用作筛选器:

    cat big.txt | python tolowerutf8.py > lower.txt3