#1 Le 27/08/2018, à 22:40
- metalux
[Résolu]Besoin d'explication sur une ligne grep
Bonjour,
J'ai cette ligne:
var='name: <alsa_output.pci-0000_00_1b.0.analog-stereo>'
Selon wikipedia,
Since version 7.2, \K can be used in a pattern to reset the start of the current whole match. This provides a flexible alternative approach to look-behind assertions because the discarded part of the match (the part that precedes \K) need not be fixed in length.
Aussi je passe cette commande pour ne récupérer que le nom de la carte:
grep -oP "<\K.*[^>]" <(echo $var)
\K: supprime tout jusqu'au caractère < inclus
.* tout ce qui suit, hormis le caractère > grâce à [^>]
J'ai trouvé sur le net la syntaxe suivante qui fonctionne également mais je ne comprends pas comment le + est interprété dans la commande:
grep -oP "<\K[^ >]+" <(echo $var)
Est-ce que les 2 lignes se comporteraient de la même façon avec n'importe quelle variable?
Dernière modification par metalux (Le 28/08/2018, à 06:55)
Hors ligne
#2 Le 28/08/2018, à 05:57
- pingouinux
Re : [Résolu]Besoin d'explication sur une ligne grep
Bonjour,
grep -oP "<\K.*[^>]" <<<"$var"
Correction : Suite à la remarque de Watael #4
s'arrête avant le dernier caractère >.
s'arrête sur le dernier caractère qui n'est pas un >.
grep -oP "<\K[^ >]+" <<<"$var"
s'arrête avant le premier caractère > ou espace.
[^ >]+ : 1 ou plus caractères qui ne sont ni des espaces ni >
<<<"$var" permet de traiter correctement des espaces multiples dans la variable
Dernière modification par pingouinux (Le 28/08/2018, à 07:18)
Hors ligne
#3 Le 28/08/2018, à 06:55
- metalux
Re : [Résolu]Besoin d'explication sur une ligne grep
Merci pour cette explication détaillée. Bonne journée.
Hors ligne
#4 Le 28/08/2018, à 07:06
- Watael
Re : [Résolu]Besoin d'explication sur une ligne grep
<zizanie>
$ var='name: <alsa_output.pci-0000_00_1b.0.analog-stereo>blabla'
$ grep -oP "<\K.*[^>]" <<<"$var"
alsa_output.pci-0000_00_1b.0.analog-stereo>blabla
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#5 Le 28/08/2018, à 07:15
- pingouinux
Re : [Résolu]Besoin d'explication sur une ligne grep
Ah oui, je me suis trompé et vais corriger.
Hors ligne