2012-10-30 52 views
0

我在获取diff的输出以写入文件时遇到了一些问题。我有一个.strings文件的新旧版本,我希望能够将这两个文件之间的差异写入.strings.diff文件。unix 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似乎是一个二进制文件。有什么方法可以将diff输出到UTF-8编码文件吗?

请注意,我试图只是在我的第二个命令中使用fgrep获得添加。如果有更简单的方法来做到这一点,请让我知道。

感谢,

肖恩

+3

diff不会创建二进制文件。你确定你了解diff输出格式吗(看起来像你)。这样可以将您带回您的源代码Localizable.strings。这听起来像你有使用非美国/英国英语的代码。你看过LC_ *变量和LANG的差异运行差异吗?祝你好运。 – shellter

回答

1

首先,你可能需要确定Localizable.strings文件的编码。例如,这可以通过How to find encoding of a file in Unix via script(s)所述的方式完成。

那么很可能你需要将Localizable.strings文件转换为UTF-8等工具来使用iconv命令喜欢的东西:

 
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 

x是通过的iconv识别的形式实际的编码。你可以使用iconv --list来显示它所知道的所有编码。

然后,您可能需要diff而不必使用-a

 
diff -u -B Localizable.strings.old.utf8 Localizable.strings.new.utf8 >Localizable.strings.diff.utf8 
+0

感谢kbulgrien&住房。在执行iconv命令之前知道.strings文件的编码正是我所需要的。 – seanoshea