将UNIX diff的结果输出到文件中。

16 浏览
0 Comments

将UNIX 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仅获取新增的内容。如果有更简单的方法,请让我知道。

谢谢,

Sean

admin 更改状态以发布 2023年5月21日
0
0 Comments

首先,您可能需要确定 Localizable.strings 文件的编码方式。例如,可以按照 https://stackoverflow.com/questions/805418/how-to-find-encoding-of-a-file-in-unix-via-scripts 中描述的方式进行操作。\n然后,您可能需要使用像 iconv 这样的工具将 Localizable.strings 文件转换为 UTF-8,并使用以下命令:\n

\niconv -f x -t UTF-8 $PROJECT_DIR/new/Localizable.strings >Localizable.strings.new.utf8\niconv -f x -t UTF-8 $PROJECT_DIR/old/Localizable.strings >Localizable.strings.old.utf8\n

\n其中,x 是 iconv 能够识别的实际编码格式。您可以使用 iconv --list 显示所有 iconv 知道的编码格式。\n然后,您可能需要进行 diff 操作,而无需使用 -a 参数。\n

\ndiff -u -B Localizable.strings.old.utf8 Localizable.strings.new.utf8 >Localizable.strings.diff.utf8\n

0