#!/bin/sh awk -v query="$1" ' /^!/ || length($0) == 0 { next } { delI=index($0, ":") path=substr($0, 0, delI - 1) gsub(/[\\.^$(){}\[\]|+]/, "\\\\&", path) gsub(/*/, ".*?", path) gsub(/\\\.?\\./, "\\.[^.]*\\.", path) gsub(/^\?$/, "^[^.]*$", path) gsub(/^\?\\./, "^[^.]*\\.", path) gsub(/\\.\?$/, "\\.[^.]*$", path) } query ~ path { res=substr($0, delI + 1) gsub(/^[\t ]+/, "", res) printf "%s", res exit } ' "$HOME/.Xdefaults"