0

数日前、cygwin をインストールしました。emacsで使いたかったので、grepがインストールされていることを確認しました。2つのファイルの違いを取得したいとき、うまくいかないようだったので、cygwinターミナルだけを使ってうまくいかなかった最も単純なシナリオを試しました。

私は2つのファイル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

なぜこれが起こっているのでしょうか?それはおそらく本当にばかげたものですが、原因を見つけることができないようで、似たようなものを見つけることができませんでした.

4

1 に答える 1

0

私の最初の考えは、あなたのファイルには unix/linux の行末 (LF) ではなく Windows の行末 (CRLF) があり、ファイルを解析する grep の機能を台無しにしているということです。これを実行してみてください:

dos2unix temp1 temp2

次に、grep ステートメントを再試行してください。

特記:

cygwin を多用する場合は、メモ帳やワードパッドよりも優れたテキスト エディターを入手することを強くお勧めします。

notepadd++は、無数の他の機能の中でも、Windows または UNIX/Linux の行末を簡単に使用できるようにするオプションの 1 つです。

于 2012-12-06T20:01:13.710 に答える