String Functions
String length — print field length alongside value
printf '%s\n' vault-01 ise-pan nginx-proxy | awk '{print length($1), $1}'
Lines longer than 80 characters
ps aux | awk 'length($0) > 80'
Extract substring — first 3 characters
printf '%s\n' vault-01 ise-pan nginx-proxy | awk '{print substr($1, 1, 3)}'
Substring from position 4 to end
printf '%s\n' vault-01 ise-pan nginx-proxy | awk '{print substr($1, 4)}'
Find position of substring
cat <<'EOF' | awk '{pos=index($0, "ERROR"); if(pos) print "Found at position", pos}'
2026-04-11 INFO service started
2026-04-11 ERROR connection refused to 10.50.1.50
2026-04-11 WARN timeout approaching
2026-04-11 ERROR cert expired for vault-01
EOF
Split string into array — break on dashes
printf '%s\n' vault-01 ise-pan-node nginx-proxy-lb | awk '{n=split($1, arr, "-"); for(i=1;i<=n;i++) print arr[i]}'
Formatted string with sprintf
printf '%s\n' vault ise pfsense vyos | awk '{s=sprintf("%05d-%s", NR, $1); print s}'
Extract hostname from FQDN
echo "vault-01.inside.domusdigitalis.dev" | awk -F'.' '{print $1}'
Normalize MAC address — colons to dashes, lowercase
echo "14:F6:D8:7B:31:80" | awk '{gsub(/:/, "-"); print tolower($0)}'