$ lspci -v | grep "\[.HCI\]" | grep "(^|\]).*\[" # ne m'affiche rien $ lspci -v | grep "\[.HCI\]" | egrep "(^|\]).*\[" 0000:00:02.0 USB Controller: nVidia Corporation nForce2 USB Controller (rev a4) (prog-if 10 [OHCI]) 0000:00:02.1 USB Controller: nVidia Corporation nForce2 USB Controller (rev a4) (prog-if 10 [OHCI]) 0000:00:02.2 USB Controller: nVidia Corporation nForce2 USB Controller (rev a4) (prog-if 20 [EHCI]) # j'en déduit que mon expression régulière est considérée comme avancée $ lspci -v | grep "\[.HCI\]" | sed s/"(^|\]).*\["/""/g 0000:00:02.0 USB Controller: nVidia Corporation nForce2 USB Controller (rev a4) (prog-if 10 [OHCI]) 0000:00:02.1 USB Controller: nVidia Corporation nForce2 USB Controller (rev a4) (prog-if 10 [OHCI]) 0000:00:02.2 USB Controller: nVidia Corporation nForce2 USB Controller (rev a4) (prog-if 20 [EHCI])
sed n'a donc pas capté que c'était une expression régulière avancée.J ai feuilleté la documentation de GNU et le man de sed, mais je nai pas trouvé grd chose. Ma question est donc : Comment faire comprendre à sed qu'il faut quil interprète l'expression comme avancée? De même, je débute avec sed donc je ne sais vraiment pas si c la meilleure façon darriver à mes fins. Ce que je cherche en fait c à savoir si l'hôte USB est de type OHCI, UHCI ou EHCI. Jutilisais auparavant cut ( avec comme délimiteurs [ et ] ), mais sil y avait plusieurs [], ça aurait foiré. Est-ce quelqu'un expérimenté en script bash pourrait me dire ce qu'il aurait utilisé?