unix差异到文件

unix差异到文件,unix,encoding,character-encoding,diff,Unix,Encoding,Character Encoding,Diff,我在将diff的输出写入文件时遇到了一些问题。我有一个新版本和旧版本的.strings文件,我希望能够将这两个文件之间的差异写入一个.strings.diff文件 我现在就在这里: diff -u -a -B $PROJECT_DIR/new/Localizable.strings $PROJECT_DIR/old/Localizable.strings >> $PROJECT_DIR/diff/Localizable.strings.diff fgrep + $PROJECT_DI

我在将diff的输出写入文件时遇到了一些问题。我有一个新版本和旧版本的.strings文件,我希望能够将这两个文件之间的差异写入一个.strings.diff文件

我现在就在这里:

diff -u -a -B $PROJECT_DIR/new/Localizable.strings $PROJECT_DIR/old/Localizable.strings >> $PROJECT_DIR/diff/Localizable.strings.diff
fgrep + $PROJECT_DIR/diff/Localizable.strings.diff > $PROJECT_DIR/diff/Localizable.txt
diff命令的结果写入Localizable.strings.diff时没有任何问题,但Localizable.strings.diff似乎是一个二进制文件。有没有办法将差异输出到UTF-8编码的文件

请注意,我正试图在第二个命令中使用fgrep获取添加项。如果有更简单的方法,请告诉我

谢谢


Sean

首先,您可能需要确定Localizable.strings文件的编码。这可以通过以下方式实现,例如

然后,您可能需要使用类似以下命令的工具(如
iconv
)将Localizable.strings文件转换为UTF-8:

iconv -f x -t UTF-8 $PROJECT_DIR/new/Localizable.strings >Localizable.strings.new.utf8 iconv -f x -t UTF-8 $PROJECT_DIR/old/Localizable.strings >Localizable.strings.old.utf8
diff不创建二进制文件。您确定您了解diff输出格式(看起来是这样的)。这将带您回到源代码Localizable.strings。听起来您的代码使用的是非美国/英国英语。您有没有考虑过为LC_*vars和LANG使用不同的值运行diff?祝你好运。谢谢kbulgrien&Heard。在执行iconv命令之前知道.strings文件的编码正是我所需要的。 diff -u -B Localizable.strings.old.utf8 Localizable.strings.new.utf8 >Localizable.strings.diff.utf8