The patterns between slashes like /pattern/ are called **ERE constants**, or **regular expressions literals**. As the names imply, they can only contain fixed, constant regular expressions. If you have a variable //var// that contains "**abc(123)?r+**" and try to match something against /var/, you are matching against the literal string "var", not against the regular expression. You can still use strings in places where regular expressions are expected, like this: {{{ awk var="abc(123)?r+" if ($1 ~ var){ # $1 matches, do something } }}} or {{{ awk BEGIN{var="abc(123)?r+"} $0 ~ var { # $0 matches, do something } }}} Also note that when you're using a string as a regular expression you must explicitly match it against the string you want to check; you can NOT use the string alone and expect awk to understand that you mean $0 ~ string, as happens instead for RE literals. Finally, using a string as a regex produces what's called a "computed" or "dynamic" regex. For a detailed discussion of computed regexes and the issues you should be aware of when using them, see [[http://www.gnu.org/software/gawk/manual/gawk.html#Computed-Regexps|the GNU awk manual]].
Summary:
This change is a minor edit.
Username: