Shell-Script

用於顯示兩個文本文件之間差異的 Bash 腳本

  • September 26, 2017

假設我有兩個列表:

guests-2016.txt:

Peter
Michael
Frank
Dirk

guests-2017.txt:

Mark
Michael
Dirk
Lilly

如何創建兩個新的客人名單

  1. 已入住guests-2016.txt但未入住guests-2017.txt( former_guests.txt)的客人
  2. 未入住guests-2016.txtguests-2017.txt現在入住的客人 ( new_guests.txt)

應該忽略空行。只能使用標準實用程序。

我的想法是使用diff並進行一些後期處理。

給定兩個排序的文件,comm將為您執行此操作。

-2 -3例如,查看和-1 -3命令行選項的組合。

檢查,它是否完成工作。如果需要,我可以添加解釋。

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

引用自:https://unix.stackexchange.com/questions/394612