Awk solution for your initial condition "for every unique value in column 1 the interval of values in column 2" (as you have changed your condition considerably):
awk 'NR > 1{ if ($1 == num1) intvl += num2 - $2; else { print intvl; intvl = 0 } } { num1 = $1; num2 = $2 } END{ print intvl }' file Sample output:
22.3612 23.2031 Covering the 2nd condition "to print a previous and the recent value of column 2 if the value in column 1 changes":
awk '!a[$1]++{ if (first != "") { print first, last; first = last = "" } first = $2 } { last = $2 } END{ print first, last }' file The output:
115.944480 93.583322 122.797168 99.594068