Gawk matching

From wikinotes
Revision as of 16:28, 21 February 2022 by Will (talk | contribs)

regex

Used to filter lines, like grep.

echo '
  1920x1080
  foo
  5760x1080
' | awk '$0 ~ /[0-9]+x[0-9]+/ { print $0 }'

match

match checks for a matching string, returns char number if found, otherwise returns a 0

match($0, "searchterm")
echo "abcdefg" | awk '{var=match($0, "cd"); print var}'
#> 3

echo "abcdefg" | awk '{var=match($0, "zef"); print var}'
#> 0

echo "abcdefg" | awk '{
   if(match($0, "cd")) {
       print "match found";
   }
}'
#> match found

match-ranges

Similar to sed, awk can operate on ranges between two matches.

# print lines between 'config:' and the end of input
zpool status zroot | awk '/^config:/,/end/ { print $0 }'