24

別のファイルでdiffを使用して異なる行のみを表示するにはどうすればよいですか?

たとえば、ファイル番号1には次の行が含まれています。

1;john;125;3
1;tom;56;2
2;jack;10;5

ファイル番号2には、次の行が含まれています。

1;john;125;3
1;tom;58;2
2;jack;10;5

次のことを実現する方法は?

1;tom;58;2
4

4 に答える 4

37

a.txt:

1;john;125;3
1;tom;56;2
2;jack;10;5

b.txt:

1;john;125;3
1;tom;58;2
2;jack;10;5

通信を使用する:

comm -13 a.txt b.txt 
1;tom;58;2

のコマンドラインオプションcommは非常に簡単です。

-1列1を抑制します(FILE1に固有の行)

-2列2を抑制します(FILE2に固有の行)

-3列3(両方のファイルに表示される行)を抑制します

于 2012-04-30T07:14:59.837 に答える
13

ファイル2に固有の行のみを保持したい場合は、次のことができます。

comm -13 file1 file2

このcommコマンドは、2つのファイルがソートされた順序であると想定していることに注意してください。

于 2012-04-30T07:15:32.237 に答える
12

これが私がより良いと思う簡単な解決策ですdiff

sort file1 file2 | uniq -u

  • sort file1 file22つのファイルを連結して並べ替えます
  • uniq -u(繰り返されない)一意の行を印刷します。入力を事前にソートする必要があります。
于 2019-08-28T22:19:20.473 に答える
7

グループフォーマット指定子を使用すると、変更されていない行の印刷を抑制し、変更された行のみを変更された行に対して印刷できます。

diff --changed-group-format="%>" --unchanged-group-format="" file1 file2

于 2016-07-26T18:29:55.287 に答える