2012-10-30 35 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