0

File1私の目標は、存在しない行を抽出することですFile2

言いましょうFile1

String A
String B
String C

言いましょうFile2

String B
String C

行はソートされ、出力は次のようになります。

String A

だから私はそれのためにこのコマンドを書きました:

diff File1 File2 | grep '^<' | sed 's/< //g'

これは、10 ~ 20 行のサンプル ファイルでは問題なく機能しました。

私もこのコマンドを試しました:

grep -Fxv -f File2 File1

これも私のサンプルファイルではうまくいきました。

しかし、問題は次のとおりです。

それぞれ約100万行の2つのファイルである私の実際のデータセットでは機能しないようです。

何が起こっている?私は何を見落としましたか?何を終わらせるべきなのですか?

4

4 に答える 4

0

空白の問題が発生しているようです。

やってみました:

diff -uBb File1 File2

マニュアルページから:

   -b  --ignore-space-change
          Ignore changes in the amount of white space.

   -B  --ignore-blank-lines
          Ignore changes whose lines are all blank.
于 2013-02-04T14:19:33.580 に答える
0

両方のファイルがソートされていますか? データが順不同の場合、diff は機能しません...
チェック:

diff -uBb <(sort File1) <(sort File2)

注:Anewによる回答を組み込みます。

于 2013-02-04T15:27:01.463 に答える