Gawk matching: Difference between revisions
From wikinotes
No edit summary |
No edit summary |
||
Line 44: | Line 44: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
</blockquote><!-- match-ranges --> | </blockquote><!-- match-ranges --> | ||
= Substitution = | |||
<blockquote> | |||
<syntaxhighlight lang="awk"> | |||
foo = "/dev/ada0p1" | |||
sub(/p[0-9]+$/, "", $foo) // search/replace first | |||
gsub(/a/, "b", $foo) // search/replace all | |||
</syntaxhighlight> | |||
</blockquote><!-- Substitution --> |
Revision as of 23:49, 25 February 2022
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 }'
Substitution
foo = "/dev/ada0p1" sub(/p[0-9]+$/, "", $foo) // search/replace first gsub(/a/, "b", $foo) // search/replace all