比较带有重音字符的两个文件(Mac OS /终端)

时间:2014-06-14 21:21:56

标签: macos terminal

目标:创建一个文件,列出在任一文件中找不到的所有行

操作系统:Mac OS X,使用终端

问题:行包含重音字符(UTF-8),并且比较似乎不起作用

我使用以下命令比较两个文件:

comm -13 <(sort file1) <(sort file2) > file3

除了包含重音字符的文件中的行外,该命令工作正常。你有任何解决方案吗?

我尝试过的一个非理想的事情就是用sed -i替换带有非重音符号的所有重音字符,但这似乎不适用于我的两个文件之一,所以我假设一个文件是怪异编码(实际上,当在TextMate中打开文件时显示ü但在TextEdit中正确显示为ü - 我使用find Photos/ -type f > list_photos.txt生成该文件以滚动浏览包含重音字符的所有文件名...也许我应该首先在find命令中添加另一个参数?)。对此有何想法?

非常感谢。

更新

我手动创建带有重音字符的文本文件。 comm命令无需LC_ALL即可运行。所以问题必须是将文件名输出到文本文件(find命令)。

测试文件A:

Istanbul 001 Mosquée Süleymaniye.JPG
Istanbul 002 Mosquée Süleymaniye.JPG

测试文件B:

Istanbul 001 Mosquée Süleymaniye.JPG
Istanbul 002 Mosquée Süleymaniye - Angle.JPG
Istanbul 003 Ville.JPG

比较产生预期结果。但是当我自动创建这些文件时,我会在文本文件中获得Su¨leymaniye。当我不生成输出文件时,终端会显示正确的单词Süleymaniye。

很多,非常感谢您对此进行调查。非常感谢。

1 个答案:

答案 0 :(得分:0)

您需要为comm设置环境

  

环境        LANG,LC_ALL,LC_COLLATE和LC_CTYPE环境变量会影响        如environ(7)中所述执行comm。

例如:

LC_COLLATE=C comm -13 <(sort file1) <(sort file2) > file3

LC_ALL=C comm -13 <(sort file1) <(sort file2) > file3
相关问题