2012-12-06 22 views
0

幾天以前,我安裝了Cygwin窗口工作。我檢查過,因爲我想在emacs中使用它,所以安裝了grep。當我想要獲得兩個文件之間的區別時,它看起來似乎不起作用,所以我嘗試了僅使用cygwin終端無法工作的最簡單的情況。在用grep犯規文件比較差異似乎

我有兩個文件 temp1中

1 
2 
3 
4 
5 
6 
7 
8 
9 
0 

TEMP2

2 
3 
4 
5 

環顧四周後,我發現,這樣做正確是這樣的:

grep -v -f temp2 temp1 

當我在cygwin中執行我得到

1 
2 
3 
4 
5 
6 
7 
8 
9 
0 

而如果我在linux做,我得到正確的輸出

1 
6 
7 
8 
9 
0 

爲什麼會這樣發生?它可能是非常愚蠢的東西,但我似乎找不到原因,我找不到類似的東西。

回答

0

我首先想到的是,你的文件有,而不是Unix/Linux操作系統行結尾(LF)窗口行尾(CRLF),那就是使用grep的解析文件的能力搞亂。嘗試運行此:

dos2unix temp1 temp2 

然後再次嘗試您的grep語句。

額外注:

如果你要大量使用的cygwin的,我強烈建議你自己變成一個更好的文本編輯器,記事本或寫字板。

notepadd++是一個很容易讓你使用windows或unix/linux行結尾,其他功能之一的選項。

+0

謝謝。這讓我發瘋。使用dos2unix它工作得很好。我個人使用emacs編輯需求,我想我會從現在開始製作一個宏來改變我的文件。非常感謝。 – listix