Skip to main content
added 46 characters in body
Source Link
Stéphane Chazelas
  • 584.5k
  • 96
  • 1.1k
  • 1.7k

With perl:

perl -lne '
  if (/ low=(\d+) up=(\d+) /) {
    $range = $2 - $1 + 1;
    $count[$range == 1]++;
    $max_range = $range if $range > $max_range;
  }
  END {
    printf "individual data: %d\nrange data: %d\nrange expanded: %d\n",
      $count[1], $count[0], $max_range;
  }' < your-file

Or if the range expanded is meant to be the overall range of all values for non-discrete ones as opposed to maximum length of a range for any single line:

perl -lne '
  if (/ low=(\d+) up=(\d+) /) {
    $count[$2 == $1]++;
    unless ($1 == $2) {
      $min_low = $1 if $1 < $min_low;
      $max_up = $2 if $2 > $max_up;
    }
  }
  END {
    printf "individual data: %d\nrange data: %d\nrange expanded: %d\n",
      $count[1], $count[0], $max_up - $min_low + 1;
  }' < your-file

With perl:

perl -lne '
  if (/ low=(\d+) up=(\d+) /) {
    $range = $2 - $1 + 1;
    $count[$range == 1]++;
    $max_range = $range if $range > $max_range;
  }
  END {
    printf "individual data: %d\nrange data: %d\nrange expanded: %d\n",
      $count[1], $count[0], $max_range;
  }' < your-file

With perl:

perl -lne '
  if (/ low=(\d+) up=(\d+) /) {
    $range = $2 - $1 + 1;
    $count[$range == 1]++;
    $max_range = $range if $range > $max_range;
  }
  END {
    printf "individual data: %d\nrange data: %d\nrange expanded: %d\n",
      $count[1], $count[0], $max_range;
  }' < your-file

Or if the range expanded is meant to be the overall range of all values for non-discrete ones as opposed to maximum length of a range for any single line:

perl -lne '
  if (/ low=(\d+) up=(\d+) /) {
    $count[$2 == $1]++;
    unless ($1 == $2) {
      $min_low = $1 if $1 < $min_low;
      $max_up = $2 if $2 > $max_up;
    }
  }
  END {
    printf "individual data: %d\nrange data: %d\nrange expanded: %d\n",
      $count[1], $count[0], $max_up - $min_low + 1;
  }' < your-file
Rollback to Revision 1
Source Link
Stéphane Chazelas
  • 584.5k
  • 96
  • 1.1k
  • 1.7k

With perl:

perl -lne '
  if (/ low=(\d+) up=(\d+) /) {
    $range = $2 - $1 + 1;
    $count[$range == 1]++;
    $max_range = $range if $range > $max_range;
  }
  END {
    printf "individual data: %d\nrange data: %d\nrange expanded: %d\n",
      $count[1], $count[0], $max_range;
  }' < your-file

Or if (maybe more likely) the range expanded is meant to be the range of all values as opposed to maximum length of a range for any single line:

perl -lne '
  if (/ low=(\d+) up=(\d+) /) {
    $count[$2 == $1]++;
    $min_low = $1 if $1 < $min_low;
    $max_up = $2 if $2 > $max_up;
  }
  END {
    printf "individual data: %d\nrange data: %d\nrange expanded: %d\n",
      $count[1], $count[0], $max_up - $min_low + 1;
  }' < your-file

With perl:

perl -lne '
  if (/ low=(\d+) up=(\d+) /) {
    $range = $2 - $1 + 1;
    $count[$range == 1]++;
    $max_range = $range if $range > $max_range;
  }
  END {
    printf "individual data: %d\nrange data: %d\nrange expanded: %d\n",
      $count[1], $count[0], $max_range;
  }' < your-file

Or if (maybe more likely) the range expanded is meant to be the range of all values as opposed to maximum length of a range for any single line:

perl -lne '
  if (/ low=(\d+) up=(\d+) /) {
    $count[$2 == $1]++;
    $min_low = $1 if $1 < $min_low;
    $max_up = $2 if $2 > $max_up;
  }
  END {
    printf "individual data: %d\nrange data: %d\nrange expanded: %d\n",
      $count[1], $count[0], $max_up - $min_low + 1;
  }' < your-file

With perl:

perl -lne '
  if (/ low=(\d+) up=(\d+) /) {
    $range = $2 - $1 + 1;
    $count[$range == 1]++;
    $max_range = $range if $range > $max_range;
  }
  END {
    printf "individual data: %d\nrange data: %d\nrange expanded: %d\n",
      $count[1], $count[0], $max_range;
  }' < your-file
added 455 characters in body
Source Link
Stéphane Chazelas
  • 584.5k
  • 96
  • 1.1k
  • 1.7k

With perl:

perl -lne '
  if (/ low=(\d+) up=(\d+) /) {
    $range = $2 - $1 + 1;
    $count[$range == 1]++;
    $max_range = $range if $range > $max_range;
  }
  END {
    printf "individual data: %d\nrange data: %d\nrange expanded: %d\n",
      $count[1], $count[0], $max_range;
  }' < your-file

Or if (maybe more likely) the range expanded is meant to be the range of all values as opposed to maximum length of a range for any single line:

perl -lne '
  if (/ low=(\d+) up=(\d+) /) {
    $count[$2 == $1]++;
    $min_low = $1 if $1 < $min_low;
    $max_up = $2 if $2 > $max_up;
  }
  END {
    printf "individual data: %d\nrange data: %d\nrange expanded: %d\n",
      $count[1], $count[0], $max_up - $min_low + 1;
  }' < your-file

With perl:

perl -lne '
  if (/ low=(\d+) up=(\d+) /) {
    $range = $2 - $1 + 1;
    $count[$range == 1]++;
    $max_range = $range if $range > $max_range;
  }
  END {
    printf "individual data: %d\nrange data: %d\nrange expanded: %d\n",
      $count[1], $count[0], $max_range;
  }' < your-file

With perl:

perl -lne '
  if (/ low=(\d+) up=(\d+) /) {
    $range = $2 - $1 + 1;
    $count[$range == 1]++;
    $max_range = $range if $range > $max_range;
  }
  END {
    printf "individual data: %d\nrange data: %d\nrange expanded: %d\n",
      $count[1], $count[0], $max_range;
  }' < your-file

Or if (maybe more likely) the range expanded is meant to be the range of all values as opposed to maximum length of a range for any single line:

perl -lne '
  if (/ low=(\d+) up=(\d+) /) {
    $count[$2 == $1]++;
    $min_low = $1 if $1 < $min_low;
    $max_up = $2 if $2 > $max_up;
  }
  END {
    printf "individual data: %d\nrange data: %d\nrange expanded: %d\n",
      $count[1], $count[0], $max_up - $min_low + 1;
  }' < your-file
Source Link
Stéphane Chazelas
  • 584.5k
  • 96
  • 1.1k
  • 1.7k
Loading