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

DIFF 内の 1 つのファイルからの行の一覧表示

わからない diff 単独でもできますが、いつでも他の GNU ユーティリティの力を利用して支援することができます。

diff -u diffa.txt diffb.txt | grep '^-[^-]' | sed 's/^-//'

diff を実行し、「-」で始まる行のみを選択します - これらは変更され、diffa.txt ファイルからの値を持ち、次に sed になります。 それらの「-」記号を削除してください。

編集: diff でいくつかの実験を行った後 、以下のコマンドがあなたが望むものを生成するように見えます:

diff --changed-group-format='%<' --unchanged-group-format='' diffa.txt diffb.txt

より簡単な方法は、 comm を使用することです linux ユーティリティ (入力にはソートされたファイルが必要です)。標準出力に書き込みます:

  • diffa.txt に固有の行

  • diffb.txt に固有の行

  • 一般的な行

それに応じて、パラメーター1、2、または3でそれらのそれぞれを抑制することができます。したがって、あなたの場合は次のようになります:

comm -23 diffa.txt diffb.txt

diffb.txt に固有の行、一般的な行を抑制し、diffa.txt にのみ固有の行を出力します

ソース: https://www.tutorialspoint.com/unix_commands/comm.htm


comm について言及したいと思います ソートされた入力ファイルを想定しているため、diff とは異なる結果を報告します .

diff --changed-group-format='%<' --unchanged-group-format='' diffa.txt diffb.txt

普遍的です。 @vava に敬意を表します


Linux
  1. 1つのファイルを除くすべてのファイル/ディレクトリを削除しますか?

  2. 各ファイルにヘッダーを含む行数でファイルを分割しますか?

  3. テキストファイルから最初の数行を効率的に削除しますか?

  1. 最後のN行をあるファイルから別のファイルにコピーしますか?

  2. ファイルに複数の行を追加するにはどうすればよいですか?

  3. 別の行からのAWK?

  1. データファイルからランダムに特定の数の線を描画しますか?

  2. Bashを使用してファイルから行を読み取る:対その間?

  3. .txt ファイルに書き込みますか?