Skip to main content
edited body
Source Link
Ed Morton
  • 36k
  • 6
  • 25
  • 60
$ cat tst.awk $2 == "*" { buf[++bufSz] = $0 next } bufSz > 0 { split(prev,p) rng = p[2] ":" $2 val = ($3 + p[3]) / 2 for (i=1; i<=bufSz; i++) { split(buf[i],flds) print (p[2]prev == "" ? buf[i] : flds[1] OFS rng OFS val) } bufSz = 0 } { print prev = $0 } END { for (i=1; i<=bufSz; i++) { print buf[i] } } 

$ awk -f tst.awk file 1 192.168.200.2 1 2 192.168.200.1 1 3 10.10.10.1 1 4 11.22.33.44 2 5 11.22.33.55 5 6 11.22.33.55:11.22.44.66 7 7 11.22.44.66 9 8 11.22.44.66:8.8.8.0 17 9 11.22.44.66:8.8.8.0 17 10 8.8.8.0 25 11 * # 12 * # 13 * # 
$ cat tst.awk $2 == "*" { buf[++bufSz] = $0 next } bufSz > 0 { split(prev,p) rng = p[2] ":" $2 val = ($3 + p[3]) / 2 for (i=1; i<=bufSz; i++) { split(buf[i],flds) print (p[2] == "" ? buf[i] : flds[1] OFS rng OFS val) } bufSz = 0 } { print prev = $0 } END { for (i=1; i<=bufSz; i++) { print buf[i] } } 

$ awk -f tst.awk file 1 192.168.200.2 1 2 192.168.200.1 1 3 10.10.10.1 1 4 11.22.33.44 2 5 11.22.33.55 5 6 11.22.33.55:11.22.44.66 7 7 11.22.44.66 9 8 11.22.44.66:8.8.8.0 17 9 11.22.44.66:8.8.8.0 17 10 8.8.8.0 25 11 * # 12 * # 13 * # 
$ cat tst.awk $2 == "*" { buf[++bufSz] = $0 next } bufSz > 0 { split(prev,p) rng = p[2] ":" $2 val = ($3 + p[3]) / 2 for (i=1; i<=bufSz; i++) { split(buf[i],flds) print (prev == "" ? buf[i] : flds[1] OFS rng OFS val) } bufSz = 0 } { print prev = $0 } END { for (i=1; i<=bufSz; i++) { print buf[i] } } 

$ awk -f tst.awk file 1 192.168.200.2 1 2 192.168.200.1 1 3 10.10.10.1 1 4 11.22.33.44 2 5 11.22.33.55 5 6 11.22.33.55:11.22.44.66 7 7 11.22.44.66 9 8 11.22.44.66:8.8.8.0 17 9 11.22.44.66:8.8.8.0 17 10 8.8.8.0 25 11 * # 12 * # 13 * # 
added 32 characters in body
Source Link
Ed Morton
  • 36k
  • 6
  • 25
  • 60
$ cat tst.awk $2 == "*" { buf[++bufSz] = $0 next } bufSz > 0 { split(prev,p) rng = p[2] ":" $2 val = ($3 + p[3]) / 2 for (i=1; i<=bufSz; i++) { split(buf[i],flds) print (p[2] == "" ? buf[i] : flds[1], OFS rng, OFS val) } bufSz = 0 } { print prev = $0 } END { for (i=1; i<=bufSz; i++) { print buf[i] } } 

$ awk -f tst.awk file 1 192.168.200.2 1 2 192.168.200.1 1 3 10.10.10.1 1 4 11.22.33.44 2 5 11.22.33.55 5 6 11.22.33.55:11.22.44.66 7 7 11.22.44.66 9 8 11.22.44.66:8.8.8.0 17 9 11.22.44.66:8.8.8.0 17 10 8.8.8.0 25 11 * # 12 * # 13 * # 
$ cat tst.awk $2 == "*" { buf[++bufSz] = $0 next } bufSz > 0 { split(prev,p) rng = p[2] ":" $2 val = ($3 + p[3]) / 2 for (i=1; i<=bufSz; i++) { split(buf[i],flds) print flds[1], rng, val } bufSz = 0 } { print prev = $0 } END { for (i=1; i<=bufSz; i++) { print buf[i] } } 

$ awk -f tst.awk file 1 192.168.200.2 1 2 192.168.200.1 1 3 10.10.10.1 1 4 11.22.33.44 2 5 11.22.33.55 5 6 11.22.33.55:11.22.44.66 7 7 11.22.44.66 9 8 11.22.44.66:8.8.8.0 17 9 11.22.44.66:8.8.8.0 17 10 8.8.8.0 25 11 * # 12 * # 13 * # 
$ cat tst.awk $2 == "*" { buf[++bufSz] = $0 next } bufSz > 0 { split(prev,p) rng = p[2] ":" $2 val = ($3 + p[3]) / 2 for (i=1; i<=bufSz; i++) { split(buf[i],flds) print (p[2] == "" ? buf[i] : flds[1] OFS rng OFS val) } bufSz = 0 } { print prev = $0 } END { for (i=1; i<=bufSz; i++) { print buf[i] } } 

$ awk -f tst.awk file 1 192.168.200.2 1 2 192.168.200.1 1 3 10.10.10.1 1 4 11.22.33.44 2 5 11.22.33.55 5 6 11.22.33.55:11.22.44.66 7 7 11.22.44.66 9 8 11.22.44.66:8.8.8.0 17 9 11.22.44.66:8.8.8.0 17 10 8.8.8.0 25 11 * # 12 * # 13 * # 
added 36 characters in body
Source Link
Ed Morton
  • 36k
  • 6
  • 25
  • 60
$ cat tst.awk $2 == "*" { buf[++bufSz] = $0 next } bufSz > 0 { split(prev,p) rng = prev[2]p[2] ":" $2 val = (prev[3]$3 + $3p[3]) / 2 for (i=1; i<=bufSz; i++) { split(buf[i],flds) print flds[1], rng, val } split($0,prev) bufSz = 0 } {  print prev = $0 } END { for (i=1; i<=bufSz; i++) { print buf[i] } } 

$ awk -f tst.awk file 1 192.168.200.2 1 2 192.168.200.1 1 3 10.10.10.1 1 4 11.22.33.44 2 5 11.22.33.55 5 6 11.22.33.55:11.22.44.66 7 7 11.22.44.66 9 8 11.22.44.66:8.8.8.0 17 9 11.22.44.66:8.8.8.0 17 10 8.8.8.0 25 11 * # 12 * # 13 * # 
$ cat tst.awk $2 == "*" { buf[++bufSz] = $0 next } { rng = prev[2] ":" $2 val = (prev[3] + $3) / 2 for (i=1; i<=bufSz; i++) { split(buf[i],flds) print flds[1], rng, val } split($0,prev) bufSz = 0 print } END { for (i=1; i<=bufSz; i++) { print buf[i] } } 

$ awk -f tst.awk file 1 192.168.200.2 1 2 192.168.200.1 1 3 10.10.10.1 1 4 11.22.33.44 2 5 11.22.33.55 5 6 11.22.33.55:11.22.44.66 7 7 11.22.44.66 9 8 11.22.44.66:8.8.8.0 17 9 11.22.44.66:8.8.8.0 17 10 8.8.8.0 25 11 * # 12 * # 13 * # 
$ cat tst.awk $2 == "*" { buf[++bufSz] = $0 next } bufSz > 0 { split(prev,p) rng = p[2] ":" $2 val = ($3 + p[3]) / 2 for (i=1; i<=bufSz; i++) { split(buf[i],flds) print flds[1], rng, val } bufSz = 0 } {  print prev = $0 } END { for (i=1; i<=bufSz; i++) { print buf[i] } } 

$ awk -f tst.awk file 1 192.168.200.2 1 2 192.168.200.1 1 3 10.10.10.1 1 4 11.22.33.44 2 5 11.22.33.55 5 6 11.22.33.55:11.22.44.66 7 7 11.22.44.66 9 8 11.22.44.66:8.8.8.0 17 9 11.22.44.66:8.8.8.0 17 10 8.8.8.0 25 11 * # 12 * # 13 * # 
Source Link
Ed Morton
  • 36k
  • 6
  • 25
  • 60
Loading