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: