unix diff to file

时间:2012-10-30 19:14:30

标签: 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_DIR/diff/Localizable.strings.diff > $PROJECT_DIR/diff/Localizable.txt

diff命令的结果写入Localizable.strings.diff没有任何问题,但Localizable.strings.diff似乎是一个二进制文件。有没有办法将diff输出到UTF-8编码文件?

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

谢谢,

肖恩

1 个答案:

答案 0 :(得分:1)

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

然后,您可能需要使用类似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

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

然后,您可能需要在不必使用-a的情况下进行区分。

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