GNU/Linux >> Linux の 問題 >  >> Linux

diff (bash) を使用して異なる行のみを表示する方法

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 を抑制 (両方のファイルにある行)


diff よりも優れていると思われる簡単な解決策を次に示します。 :

sort file1 file2 | uniq -u

  • sort file1 file2 2 つのファイルを連結して並べ替えます
  • uniq -u 一意の行 (繰り返されない) を出力します。入力を事前にソートする必要があります。

グループ書式指定子を使用すると、変更されていない行の印刷を抑制し、変更された行のみを印刷できます

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


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

comm -13 file1 file2

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


Linux
  1. diffコマンドを使用してLinuxでファイルを行ごとに比較する方法-パートII

  2. diffコマンドを使用してLinuxでファイルを行ごとに比較する方法

  3. AWK で行 (行) を減算する方法

  1. Bashを使用して整数をバイナリファイルに書き込む方法は?

  2. ファイルの行数だけを取得する方法

  3. Linuxでテキストファイルから特定の行を表示するには?

  1. bashでインストールを使用してディレクトリをディレクトリにコピーする方法は?

  2. Bashを使用してHTTPヘッダーを解析するには?

  3. bashスクリプトを使用してcrontabジョブをcrontabに追加するには?