Linux
比較兩個文本兩個文件,而一個包含日期列
我有兩個文本文件,其中一個包含:
... 2018-09-22 FFF1B976-9DDE-11E7-9C3D-6241D7D553BE 2018-09-27 682D9DB6-C0A2-11E8-B7A8-3ECB9C0CC049 2018-09-27 682D9DB6-C0A2-11E8-B7A8-3ECB9C0CC049.bai 2018-09-27 6846DFEC-C0A2-11E8-B7A8-3ECB9C0CC049 2018-09-27 6846DFEC-C0A2-11E8-B7A8-3ECB9C0CC049.bai ...
而另一個包含:
... CA9442F2-8C8C-11E7-8637-ABE8E6BF8454 ED3B2906-0117-11E8-BA0B-30D761F1560A E9A927E4-8B9B-11E7-9435-18B114A47675 373667F0-8B93-11E7-B918-13B114A47675 15D861C4-BB82-11E8-A989-7D57C505C2C3 ...
我想要實現的是相互比較並僅顯示超過 30 天的行。
您可以使用 GNU 工具找到超過 30 天的行:
awk -v month_ago="$(date -d '30 days ago' '+%F')" ' NR == FNR {ids[$1]; next} $1 < month_ago && $2 in ids ' small_file big_file
這首先讀取小文件(當 NR == FNR 時),將值儲存在數組中。
然後對於大文件中的行,日期早於 30 天並且第二個欄位出現在較小的文件中,列印該行。