다음 내용이 포함된 파일이 있습니다. 여기서는 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
.