2016-11-27 3 views
-3

Я знаю, что есть другие вопросы с подобной темой. Но решения для меня не работают. Следующий код должен сравнивать временные метки из двух CSV-файлов. Но сравнение не работает.Сравнение даты в Shell Script не работает

#!/bin/bash 
input1="/home/seconion/Desktop/DatasetAnalyse/BYOD/alertTimeConverted.csv" 
input2="/home/seconion/Desktop/DatasetAnalyse/BYOD/gt_byodTimeConverted.csv" 
while IFS=',' read -r timestamp1 msg1 proto1 srcIP1 srcPort1 dstIP1 dstPort1 
do 
    echo "next alert" 
    while IFS=',' read -r timestamp21 timestamp22 duration2 proto2 srcIP2 srcPort2 dstIP2 dstPort2 iflags2 uflags2 riflags2 ruflags2 pkt2 rpkt2 oct2 roct2 app2 entropy2 rentropy2 label2 category12 category22 comments2 
    do 
     alertTime=$(date -d "$timestamp1" +"%H%M%S%N") 
     streamTimeStart=$(date -d "$timestamp21" +"%H%M%S%N") 
     streamTimeEnd=$(date -d "$timestamp22" +"%H%M%S%N") 

     if [ $streamTimeStart -lt $alertTime ] && [ $alertTime -lt $streamTimeEnd ]; 
      then echo "true" 
     fi 
    done < "$input2" 
done < "$input1" 
+0

Можете ли вы дайте нам знать некоторые примеры значений для 'streamTimeStart',' 'streamTimeEnd' и alertTime '? – Inian

+0

это формат: 223445248591000 –

+0

Вы используете 'GNU date', вы можете проверить' date -version'? – Inian

ответ

0

Вместо того, чтобы использовать этот формат

alertTime=$(date -d "$timestamp1" +"%H%M%S%N") 
streamTimeStart=$(date -d "$timestamp21" +"%H%M%S%N") 
streamTimeEnd=$(date -d "$timestamp22" +"%H%M%S%N") 

использования эпохи, ее более вменяемый

alertTime=$(date -d "$timestamp1" +"%s") 
streamTimeStart=$(date -d "$timestamp21" +"%s") 
streamTimeEnd=$(date -d "$timestamp22" +"%s") 
Смежные вопросы