두 개의 텍스트 파일이 있는데 그 중 하나에는 다음이 포함됩니다.
...
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일보다 오래된 행만 표시하는 것입니다.
답변1
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일보다 오래되었고 두 번째 필드가 이미 작은 파일에 나타나는 큰 파일의 행에 대해 해당 행을 인쇄합니다.