假设我有两个列表:
guests-2016.txt
:
Peter
Michael
Frank
Dirk
guests-2017.txt
:
Mark
Michael
Dirk
Lilly
我如何创建两个新的宾客名单
曾在
guests-2016.txt
但不在guests-2017.txt
(former_guests.txt
)的客人之前不在
guests-2016.txt
但现在在的客人guests-2017.txt
(new_guests.txt
)
应忽略空白行。只能使用标准实用程序。
我的想法是使用diff
并进行一些后期处理。
答案1
给定两个已排序文件,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