fork(2) download
  1. val='100 0x20 105'
  2.  
  3. awk -F= -v vals="$val" 'BEGIN {
  4. n = split(vals, w, /[ \t]+/)
  5. for (i=1; i<=n; i++)
  6. values[w[i]] = 1
  7. }
  8. /^\[group[0-9]+]$/ {
  9. if (n == found)
  10. print grp
  11. delete seen
  12. found = 0
  13. grp = $0
  14. gsub(/^\[group|\]$/, "", grp)
  15. }
  16. NF == 2 && values[$2] && !seen[$2]++ {
  17. found++
  18. }
  19. END {
  20. if (n == found)
  21. print grp
  22. }'
  23.  
Success #stdin #stdout 0s 4456KB
stdin
[group1]
base=100
hwadd=0x20
doorstatus=100
lock=101
bookingnr=010100
kode=1111
inuse=0

[group2]
base=100
hwadd=0x20
doorstatus=100
lock=102
bookingnr= 010101
kode=1111
inuse=0

[group3]
base=100
hwadd=0x20
doorstatus=100
lock=103
bookingnr=010103
kode=1111
inuse=0

[group4]
base=100
hwadd=0x20
doorstatus=100
lock=105
bookingnr=010105
kode=1111
inuse=0

[group5]
base=100
hwadd=0x20
doorstatus=100
lock=106
bookingnr=010106
kode=1111
inuse=0

[group6]
base=100
hwadd=0x20
doorstatus=100
lock=107
bookingnr=010107
kode=1111
inuse=0

[group7]
base=100
hwadd=0x21
doorstatus=100
lock=101
bookingnr=010108
kode=1111
inuse=0

[group8]
base=100
hwadd=0x21
doorstatus=100
lock=102
bookingnr=010109
kode=1111
inuse=0
stdout
4