쉘 스크립트를 사용하여 다른 파일의 시간 비교

쉘 스크립트를 사용하여 다른 파일의 시간 비교

다음 내용이 포함된 파일이 있습니다. 여기서는 HIW.ear첫 번째 행의 타임스탬프를 두 번째 행의 타임스탬프와 비교 해야 하는데 .jars이를 수행하는 방법에 대한 아이디어가 부족합니다. 이에 대한 도움을 부탁드립니다. .ear 타임스탬프는 다른 모든 .jar 타임스탬프보다 작아야 합니다.

[rba@ci01 UAT]$ cat UAT1.txt
UAT - NODE1,May18;21:00;HIW.ear
May18;21:01;O.jar
May18;21:01;Com.jar
May18;21:01;D.jar
May18;21:01;F.jar

답변1

두 개의 타임스탬프를 사용하여 awk추출한 다음 타임스탬프를 형식으로 정렬하고 yyyy-mm-dd hh:MM:ss이를 에포크 시간으로 변환한 date --date='2021/05/18 21:00:22' +"%s"다음 에포크 시간을 비교하여 어느 것이 더 큰지 확인할 수 있습니다.

답변2

비교가 실패하면 어떤 일이 발생하는지 말하지 않지만

$ cat -n UAT1.txt
     1  UAT - NODE1,May18;21:00;HIW.ear
     2  May18;21:01;O.jar
     3  May18;21:01;Com.jar
     4  May18;20:59;D.jar
     5  May18;21:01;F.jar

그런 다음 Perl을 사용하여시간::조각기준 치수:

$ perl -MTime::Piece -F';' -pe '
    if($. == 1) {
      ($s,$md) = split(/,/,$F[0]);
      $t0 = Time::Piece->strptime($md . $F[1], "%B%d%H:%M");
      next
    }
    $t = Time::Piece->strptime($F[0] . $F[1], "%B%d%H:%M");
    die "Timestamp out of order" if $t < $t0;
  ' UAT1.txt
UAT - NODE1,May18;21:00;HIW.ear
May18;21:01;O.jar
May18;21:01;Com.jar
Timestamp out of order at -e line 8, <> line 4.

%B월 지정자가 이어야 하는지 또는 %b영어로 동일한 전체 및 약식 이름을 가진 월을 선택했기 때문에 예제에서 명확하지 않습니다 .

GNU awk()를 사용하여 gawk비슷한 작업을 수행 할 수 있지만 strptime요소를 적절한 형식으로 변환하려면 문자열 함수를 사용해야 합니다 mktime.

관련 정보