Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- convert_time () {
- a="$@"
- sec=${a:13:2}
- min=${a:10:2}
- hour=${a:7:2}
- time="$hour$min$sec"
- time=${time#00000}
- time=${time#0000}
- time=${time#000}
- time=${time#00}
- time=${time#0}
- echo "$time"
- }
- input="/var/backup/testfile" #preparation phase
- inputnumber=4
- firstline=$(head -n 1 "$input")
- numberoflines=$(wc -l "$input" | cut -d ' ' -f 1)
- lineID1=1
- lindID2=0
- glcount=0
- blcount=0
- declare -a linesoffile
- linesoffile[0]="$firstline"
- declare -a badlines
- declare -a linesofsecond
- while IFS= read -r line
- do
- linesoffile[$lineID1]="$line"
- starttime=$( convert_time $line )
- time2=$( convert_time ${linesoffile[$(( lineID1-1 ))]} )
- if [[ $(( starttime-time2 )) -gt $inputnumber ]] #phase one
- then
- badlines[$blcount]="$time2"
- blcount=$(( blcount+1 ))
- badlines[$blcount]="$starttime"
- blcount=$(( blcount+1 ))
- else
- glcount=$(( glcount+1 ))
- fi
- lineID1=$((lineID1+1))
- done < "$input"
- #echo " File scanned! Total lines: $numberoflines. Number of times that match was detected: $blcount"
- if [[ $blcount -eq 0 ]] #phase two
- then
- echo " The file doesnt have missing logs set by the time difference: $inputnumber"
- else
- compare="/var/backup/testfile2"
- numberoflcompare=$(wc -l "$compare" | cut -d ' ' -f 1)
- while IFS= read -r line
- do
- time2=$( convert_time $line )
- for (( i=1; i<=$blcount; i++ ))
- do
- if [[ ${badlines[$(( i-1 ))]} -le $time2 ]] && [[ ${badlines[$i]} -ge $time2 ]]
- then
- linesofsecond[$lineID2]="$line"
- lineID2=$((lineID2+1))
- fi
- done
- done < "$compare"
- #echo " Second file's scan is complete! Total lines: $numberoflcompare. Number of lines detected between the missing timestamps: $lineID2."
- x=1 #pahse three
- y=0
- for (( i=1; i<$lineID1; i++ ))
- do
- time1=$( convert_time ${linesoffile[$(( i-1 ))]} )
- time2=$( convert_time ${linesoffile[$i]} )
- if [[ ${badlines[$(( x-1 ))]} -eq $time1 ]] && [[ ${badlines[$x]} -eq $time2 ]]
- then
- time3=$( convert_time ${linesofsecond[$y]} )
- while [[ ${badlines[$x]} -ge $time3 ]] && [[ ${badlines[$(( x-1 ))]} -le $time3 ]] || [[ ${linesofsecond[$y]} -ne ${linesofsecond[$(( y-1 ))]}
- do
- echo "${linesofsecond[$y]} --"
- y=$(( y+1 ))
- time3=$( convert_time ${linesofsecond[$y]} )
- done
- x=$(( x+2 ))
- else
- #glcount=0
- echo "${linesoffile[$i]} |"
- fi
- done #>> /var/backup/testfile3
- #echo " Combination complete! new file: \var\backup\testfile3"
- fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement