#!/usr/bin/awk -f # Filters the joystick parameter file, keeping everything but sections # matching the contents of the kernel, name, serial, vendor and # product variables (typically specified on the command line), # repectively kernel device, joystick name, joystick serial number, # USB vendor code, USB product code. BEGIN { FS = "\""; seckernel = ""; secname = ""; secserial = ""; secvendor = ""; secproduct = ""; secoutput = 0; } /^DEVICE=/ { seckernel = $2; } /^NAME=/ { secname = $2; } /^SERIAL=/ { secserial = $2; } /^VENDOR=/ { secvendor = $2; } /^PRODUCT/ { secproduct = $2; } /(^js)|(^$)/ { # Command or empty line, ends the match criteria for a given # section if ((kernel == "" || seckernel == kernel) && (name == "" || secname == name) && (serial == "" || secserial == serial) && (vendor == "" || secvendor == vendor) && (product == "" || secproduct == product)) { # The section matches, skip it } else { # The section doesn't match, output it if (secoutput == 0) { if (seckernel != "") { print "DEVICE=\"" seckernel "\""; } if (secname != "") { print "NAME=\"" secname "\""; } if (secserial != "") { print "SERIAL=\"" secserial "\""; } if (secvendor != "") { print "VENDOR=\"" secvendor "\""; } if (secproduct != "") { print "PRODUCT=\"" secproduct "\""; } secoutput = 1; } print $0; if ($0 ~ /$^/) { # New section, clear the section information secoutput = 0; seckernel = ""; secname = ""; secserial = ""; secvendor = ""; secproduct = ""; } } }