Comment utiliser des expressions régulières avancées avec sed?
3 réponses
SuperDindon
$ 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=
=20
a4) (prog-if 10 [OHCI])
0000:00:02.1 USB Controller: nVidia Corporation nForce2 USB Controller (rev=
=20
a4) (prog-if 10 [OHCI])
0000:00:02.2 USB Controller: nVidia Corporation nForce2 USB Controller (rev=
=20
a4) (prog-if 20 [EHCI])
# j'en d=E9duit que mon expression r=E9guli=E8re est consid=E9r=E9e comme a=
vanc=E9e
$ lspci -v | grep "\[.HCI\]" | sed s/"(^|\]).*\["/""/g
0000:00:02.0 USB Controller: nVidia Corporation nForce2 USB Controller (rev=
=20
a4) (prog-if 10 [OHCI])
0000:00:02.1 USB Controller: nVidia Corporation nForce2 USB Controller (rev=
=20
a4) (prog-if 10 [OHCI])
0000:00:02.2 USB Controller: nVidia Corporation nForce2 USB Controller (rev=
=20
a4) (prog-if 20 [EHCI])
sed n'a donc pas capt=E9 que c'=E9tait une expression r=E9guli=E8re avanc=
=E9e.J ai=20
feuillet=E9 la documentation de GNU et le man de sed, mais je nai pas trouv=
=E9=20
grd chose. Ma question est donc :=20
Comment faire comprendre =E0 sed qu'il faut quil interpr=E8te l'expression =
comme=20
avanc=E9e?
De m=EAme, je d=E9bute avec sed donc je ne sais vraiment pas si c la meille=
ure=20
fa=E7on darriver =E0 mes fins. Ce que je cherche en fait c =E0 savoir si l'=
h=F4te USB=20
est de type OHCI, UHCI ou EHCI. Jutilisais auparavant cut ( avec comme=20
d=E9limiteurs [ et ] ), mais sil y avait plusieurs [], =E7a aurait foir=E9.
Est-ce quelqu'un exp=E9riment=E9 en script bash pourrait me dire ce qu'il a=
urait=20
utilis=E9?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
SuperDindon
Le dimanche 19 Décembre 2004 13:08, SuperDindon :
$ 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 (r ev a4) (prog-if 10 [OHCI]) 0000:00:02.1 USB Controller: nVidia Corporation nForce2 USB Controller (r ev a4) (prog-if 10 [OHCI]) 0000:00:02.2 USB Controller: nVidia Corporation nForce2 USB Controller (r ev 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 (r ev a4) (prog-if 10 [OHCI]) 0000:00:02.1 USB Controller: nVidia Corporation nForce2 USB Controller (r ev a4) (prog-if 10 [OHCI]) 0000:00:02.2 USB Controller: nVidia Corporation nForce2 USB Controller (r ev 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 tro uvé 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 meil leure 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é?
Ah bah si jai trouvé :
sed -r s/"(^|]).*["/""/g
dsl pour le dérangement
Le dimanche 19 Décembre 2004 13:08, SuperDindon <lachienne@wanadoo.fr> :
$ 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 (r ev
a4) (prog-if 10 [OHCI])
0000:00:02.1 USB Controller: nVidia Corporation nForce2 USB Controller (r ev
a4) (prog-if 10 [OHCI])
0000:00:02.2 USB Controller: nVidia Corporation nForce2 USB Controller (r ev
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 (r ev
a4) (prog-if 10 [OHCI])
0000:00:02.1 USB Controller: nVidia Corporation nForce2 USB Controller (r ev
a4) (prog-if 10 [OHCI])
0000:00:02.2 USB Controller: nVidia Corporation nForce2 USB Controller (r ev
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 tro uvé
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 meil leure
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é?
$ 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 (r ev a4) (prog-if 10 [OHCI]) 0000:00:02.1 USB Controller: nVidia Corporation nForce2 USB Controller (r ev a4) (prog-if 10 [OHCI]) 0000:00:02.2 USB Controller: nVidia Corporation nForce2 USB Controller (r ev 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 (r ev a4) (prog-if 10 [OHCI]) 0000:00:02.1 USB Controller: nVidia Corporation nForce2 USB Controller (r ev a4) (prog-if 10 [OHCI]) 0000:00:02.2 USB Controller: nVidia Corporation nForce2 USB Controller (r ev 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 tro uvé 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 meil leure 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é?
Ah bah si jai trouvé :
sed -r s/"(^|]).*["/""/g
dsl pour le dérangement
Jacques L'helgoualc'h
SuperDindon a écrit, dimanche 19 décembre 2004, à 13:21 : [...]
Ah bah si jai trouvé :
info sed
est bien plus riche que man sed... mais moins que http://sed.sf.net/
sed -r s/"(^|]).*["/""/g
Ton quotage est un peu bizarre ?
sed -r 's/(^|]).*[//g'
-- Jacques L'helgoualc'h
-- Pensez à lire la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench
Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
SuperDindon a écrit, dimanche 19 décembre 2004, à 13:21 :
[...]
Ah bah si jai trouvé :
info sed
est bien plus riche que man sed... mais moins que http://sed.sf.net/
sed -r s/"(^|]).*["/""/g
Ton quotage est un peu bizarre ?
sed -r 's/(^|]).*[//g'
--
Jacques L'helgoualc'h
--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org