[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Comment utiliser des expressions régulières avancées avec sed?



$ 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é?



Reply to: