Сравните время разных файлов с помощью сценария оболочки

Номера головок, цилиндров и секторов отображаются только для исторических целей и для использования некоторыми очень старыми программами. Сегодня для адресации дисков используется логическая блочная адресация. Геометрия современных дисков обычно имеет переменное количество секторов, внешние дорожки имеют больше секторов, чем внутренние дорожки.

Различные интерфейсы имеют максимальные значения 255 головок, 63 сектора на дорожку, поэтому, чтобы можно было выразить значения CHS для большого диска, они устанавливаются на соответствующие максимальные значения, а количество цилиндров округляется в меньшую сторону до ближайшего целочисленное значение, дающее приблизительное значение общего количества секторов на диске. Как вы видели, реальное количество секторов обычно отличается. Фактическая геометрия диска даже близко не соответствует значениям CHS; например, вероятно, ни один из когда-либо изготовленных дисков не имеет 255 головок.

0
19.05.2021, 11:29
2 ответа

Вы можете awkизвлечь обе метки времени, затем упорядочить метки времени в формате yyyy-mm-dd hh:MM:ss, преобразовать их во время эпохи с помощью date --date='2021/05/18 21:00:22' +"%s"и затем сравнить время эпохи, чтобы увидеть, какое из них больше.

1
28.07.2021, 11:31

Вы не говорите, что должно произойти, если сравнение не удается, но дано

$ 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 с модулем Time ::Piece :

$ 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.

1
28.07.2021, 11:31

Теги

Похожие вопросы