2 つのテキストファイルの違いを表示する Bash スクリプト

2 つのテキストファイルの違いを表示する Bash スクリプト

2つのリストがあるとしましょう。

guests-2016.txt:

Peter
Michael
Frank
Dirk

guests-2017.txt:

Mark
Michael
Dirk
Lilly

2つの新しいゲストリストを作成する方法

  1. 参加したがguests-2016.txt参加していないゲストguests-2017.txt()former_guests.txt

  2. 以前はありませんでしたguests-2016.txtが、今はここにいるゲストguests-2017.txtnew_guests.txt

空行は無視する必要があります。標準ユーティリティのみ使用できます。

diff私の考えは、いくつかの後処理を使用して実行することです。

答え1

2個与えられるソート済みファイルはcommこれを行います。

たとえば、-2 -3コマンドラインオプションの組み合わせを参照してください。-1 -3

答え2

作業が完了したことを確認してください。必要に応じて説明を追加できます。

awk '
/^$/{next}
FNR == NR {guest_2016[$1] = 1}
FNR != NR {
    if(!guest_2016[$1])
        print $1 > "new_guests.txt" 
    delete guest_2016[$1];
}
END {
    for(i in guest_2016)
        print i > "former_guests.txt"
}' guests-2016.txt guests-2017.txt

関連情報