Regex Match
Extract first number from each line
cat <<'EOF' | awk '{if(match($0, /[0-9]+/)) print substr($0, RSTART, RLENGTH)}'
vault-01 port 8200
ise-pan node 2
pfsense rule allow
vyos interface eth0
EOF
Extract all IPv4 addresses from mixed text
cat <<'EOF' | awk '{while(match($0, /[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/)) {print substr($0,RSTART,RLENGTH); $0=substr($0,RSTART+RLENGTH)}}'
dns server at 10.50.1.50 and fallback 10.50.1.1
ise-pan listening on 10.50.1.20 port 443
no addresses here
gateway 10.50.1.1 routes to 192.168.10.0
EOF
Extract key=value pairs
echo "user=admin;role=root;timeout=300" | awk -F'[=;]' '{print $2, $4, $6}'
Extract hostname from config line
cat <<'EOF' | awk -F'=' '/^hostname/{print $2}'
hostname=vault-01
listen_port=8200
tls_cert=/etc/ssl/certs/vault.pem
hostname=ise-pan
EOF
Match and extract with GNU awk named groups
echo "error code=42 msg=timeout" | gawk 'match($0, /code=([0-9]+)/, a) {print a[1]}'
Extract CN from X.509 certificate subject
openssl x509 -subject -noout -in cert.pem | awk -F'CN ?= ?' '{print $2}' | awk -F',' '{print $1}'
Extract SANs from certificate
openssl x509 -noout -ext subjectAltName -in cert.pem | awk -F'DNS:' '{for(i=2;i<=NF;i++){gsub(/,.*/,"",$i); print $i}}'