- awk \
- -v _s="$name" \
- '
- BEGIN {_s = tolower(_s)}
-
- # TODO fzf/dmenu select instead of searching:
- /^[a-zA-Z]/ && tolower($1) ~ _s && NF >= 2 {
- n++
- s = $1
- p = $NF
- if (NF == 2) {
- e = ""
- u = ""
- } else if (NF == 3) {
- e = $2
- u = ""
- } else {
- e = $2
- u = $3
- } # TODO What would NF > 4 mean?
-
- printf("%d [O] s:\"%s\", e:\"%s\", u:\"%s\"\n", n, s, e, u) > "/dev/stderr"
- if (match(u, "@")) {
- tmp = e
- e = u
- u = tmp
- printf("%d [C] s:\"%s\", e:\"%s\", u:\"%s\"\n", n, s, e, u) > "/dev/stderr"
- }
- ps[n] = p
- }
-
- END {
- printf "%s", ps[n] # XXX Intentionally avoiding newline in the result.
- if (n == 1) {
- exit 0
- } else if (n == 0) {
- printf "[ERROR] Found nothing.\n" > "/dev/stderr"
- exit 1
- } else if (n > 1) {
- # TODO fzf-select which of the records the user (ahem, me) wants.
- printf "[WARNING] Found more than one record. Selecting the last one.\n" > "/dev/stderr"
- exit 0
- }
- }
- ' \
- "$file" \
- | xsel -i -b -t 30000