0

最後の日、私は Windows Batch で comm を使って多くのことを行い、テキストファイルを相互に比較しました。通常、私が間違ったことは何もありません。私の他のプロジェクトでは、以下のコードは正常に動作していますが、実際にはそうではなく、理由がわかりません。

通信について学んだことは、両方のファイルを並べ替える必要があるため、両方のファイルに追加したことです。新しいファイル>アーカイブを使用して比較しようとしましたが、出力はall.txt内にない行である必要があります

D:/filetype/core/sort.exe -b D:\filetype\test\all.txt -oD:\filetype\test\all.txt

D:/filetype/core/sort.exe -b D:\filetype\test\listfile_export_tmp2.txt -oD:\filetype\test\listfile_export_tmp2.txt

D:/filetype/core/comm.exe -2 -3 D:\filetype\test\listfile_export_tmp2.txt D:\filetype\test\all.txt > D:\filetype\test\output.txt

テストのために、all.txt と比較したいテキストを追加したので、ここには何も新しいものがないため、出力はゼロになるはずです。しかし、結果として、output.txt は最初のテキストファイル内にあるものとまったく同じになります。all.txt を手で確認したところ、比較しようとしているこれらの行が内部にあり、テストファイルと異なる文字でソートが正しく機能していることを確認しました。

だからここに私が思うものがあります

  1. 私の他のプロジェクトでは、私には見えない違いがあります。そして、それは私のせいです
  2. 1 つのテキスト ファイルが小さすぎる場合、Comm は 2 つのファイルを比較できません。50MB のファイルと 1KB のファイルを比較しようとしています。

リクエストに応じて、テスト用に両方のファイルを提供できます

4

1 に答える 1

0

わかりました。grep と comm は、比較中に空白行に一致します。したがって、入力として小さなテキストファイルしかなく、他のいくつかの空白行 (私の場合は大きい方) を取得した場合、彼はすべての空白行に一致する可能性が高く、その結果、入力が再び表示されます。

空白行を削除するには、sed を使用しました

ウィンドウズ

sed.exe "/^\s*$/d" 

Linux

sed '/^\s*$/d'

そして今、jupはすべて正常に機能しています。(ただし、並べ替えを忘れないでください)

于 2016-07-09T14:49:57.860 に答える