Skip to main content
added 401 characters in body
Source Link
RomanPerekhrest
  • 30.9k
  • 5
  • 47
  • 68

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 

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 

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 
Source Link
RomanPerekhrest
  • 30.9k
  • 5
  • 47
  • 68

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