AWK: come potrei riscrivere una riga di comando senza entrare ed uscire continuamente da BASH ad AWK?
Inviato: domenica 11 agosto 2024, 20:33
Salve a tutti.
Al fine di rilevare le nuove periferiche USB, ho messo a punto questa serie di comandi BASH:
che funziona perfettamente, ma ho notato che va uso di una serie di istruzioni consecutive che fanno sì che ad ogni ; (puntoevirgola) BASH passa dati ad AWK che li elabora per poi consegnare il risultato a BASH; mi riferisco ai comandi consecutivi
che, da quanto ho capito leggendo qui
https://it.wikipedia.org/wiki/Awk
dovrebbe essere possibile passare la variabile $A1 ad AWK, far fare ad AWK il lavoro, ed infine far ritornare il risultato nella variabile $A0
Purtroppo, non ho capito come si fa.
Qualcuno è in grado di aiutarmi?
Ringrazio sin d'ora chi mi aiuterà.
-*-
edit
Io sono arrivato al punto di farla diventare così
ma, se ho ben capito quello che ho letto, dovrebbe essere possibile accorparla ulteriormente...
Al fine di rilevare le nuove periferiche USB, ho messo a punto questa serie di comandi BASH:
Codice: Seleziona tutto
A1=`dmesg|grep found|grep idVendor|tail -1`; echo $A1; A2=`echo "$A1" | awk '{ sub(", idProduct=",":"); print; }'`; A3=`echo "$A2" | awk '{ sub("=",","); print; }'`; A4=`echo "$A3" | awk '{ sub(":",","); print; }'`; A0=`echo $A4|awk -F'usb ' '{print $2}'`; B0=`echo $A0|awk -F',' '{print $1}'`; C0=`echo $A0|awk -F',' '{print $4}'`; lsusb -vd "$C0"|head -17; lsusb -tvv |grep $B0 -B2Codice: Seleziona tutto
A2=`echo "$A1" | awk '{ sub(", idProduct=",":"); print; }'`; A3=`echo "$A2" | awk '{ sub("=",","); print; }'`; A4=`echo "$A3" | awk '{ sub(":",","); print; }'`; A0=`echo $A4|awk -F'usb ' '{print $2}'`https://it.wikipedia.org/wiki/Awk
dovrebbe essere possibile passare la variabile $A1 ad AWK, far fare ad AWK il lavoro, ed infine far ritornare il risultato nella variabile $A0
Purtroppo, non ho capito come si fa.
Qualcuno è in grado di aiutarmi?
Ringrazio sin d'ora chi mi aiuterà.
-*-
edit
Io sono arrivato al punto di farla diventare così
Codice: Seleziona tutto
A1=`dmesg|grep found|grep idVendor|tail -1`; echo $A1; A4=`echo "$A1" | awk '{ sub(", idProduct=",":"); sub("=",","); sub(":",","); print; }'`; A0=`echo $A4|awk -F'usb ' '{print $2}'`; B0=`echo $A0|awk -F',' '{print $1}'`; C0=`echo $A0|awk -F',' '{print $4}'`; lsusb -vd "$C0"|head -17; lsusb -tvv |grep $B0 -B2