次の内容を含むファイルがあります。ここでは、HIW.ear
最初の行のタイムスタンプを2行目のタイムスタンプと比較する必要があり.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
2つのタイムスタンプを使用して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
。