#1 Le 22/11/2018, à 06:37
- ar barzh paour
[Résolu] sed et récupératon entre guillemets
bonjour à tous
voilà mon problème :
je voudrais récupérer dans une variable avec sed ce qu'il y a entre les guillemets d'une ligne qui contient LABEL="........."
(EDIT : awk m'irait aussi bien )
j'ai trituré la ligne mais je n'y arrive pas directement
ligne='...".."....LABEL="x y z t".........."....."..'
var=$(echo "${ligne}"|sed 's/.*LABEL=\"\(.*\)".*/\1/')
echo $var
x y z t".........."....."..
ce qui ne va pas je pense c'est
".* qui se trouve après \(.*\)
remarque
j'y suis arrivé avec
tmp1=${ligne#*LABEL=\"} # supprimer ce qu'il y a avant LABEL="
# !!!!! la ligne ci-dessus fait perdre la colorisation syntaxique de gedit !!!!!
# vieux problème que j'avais soulevé mais non résolu
tmp2=${tmp1%%\"*} #dans ce que l'on vient de récupérer supprimer ce qu'il y a après "
Dernière modification par ar barzh paour (Le 29/11/2018, à 18:24)
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne
#2 Le 22/11/2018, à 06:46
- pingouinux
Re : [Résolu] sed et récupératon entre guillemets
Bonjour,
Avev sed
sed -r 's/.*LABEL="([^"]+)".*/\1/' <<<"$ligne"
Avac grep
grep -Po '(?<=LABEL=")[^"]+' <<<"$ligne"
Hors ligne
#3 Le 22/11/2018, à 07:02
- ar barzh paour
Re : [Résolu] sed et récupératon entre guillemets
merci pingouinux
j'interprète ([^"]+ ) : mémoriser 1 à n fois sauf "
utilisation des Ere avec sed , je n'utilise pas suffisamment pour y penser ... et trouver la bonne syntaxe en plus
je vais pouvoir simplifier mon script
pour grep , je ne connais pas perl ....
Dernière modification par ar barzh paour (Le 22/11/2018, à 10:10)
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne
#4 Le 22/11/2018, à 07:05
- pingouinux
Re : [Résolu] sed et récupératon entre guillemets
j'interprète ([^"]+ ) : mémoriser 1 à n fois sauf "
Oui, c'est une suite non nulle de caractères différents de "
Hors ligne
#5 Le 23/11/2018, à 08:32
- ar barzh paour
Re : [Résolu] sed et récupératon entre guillemets
aïe ça va pas , enfin si fonctionne assez bien pour LABEL
mais si je remplace LABEL par UUID (hé hé) ça ne va plus
explication ci-dessous
OK
LABEL=$(echo ${ligne}|sed -r 's/.*LABEL="([^"]+)".*/\1/')
/dev/sda2: LABEL="U18.04-a2-64b" UUID="adb3563a-ddba-4f75-8e82-7df3e3d2a4a5" TYPE="ext4" PTTYPE="dos" PARTUUID="00096b93-02"
LABEL : U18.04-a2-64b
UUID=$(echo ${ligne}|sed -r 's/.*UUID="([^"]+)".*/\1/')
pas bon , il prend ce qui se trouve après PARTUUID="
UUID : 00096b93-02
en ajoutant espace devant le terme recherché ça devrait fonctionner
UUID=$(echo ${ligne}|sed -r 's/.* UUID="([^"]+)".*/\1/')
UUID : adb3563a-ddba-4f75-8e82-7df3e3d2a4a5
Dernière modification par ar barzh paour (Le 23/11/2018, à 09:17)
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne
#6 Le 23/11/2018, à 08:47
- Watael
Re : [Résolu] sed et récupératon entre guillemets
salut,
quelle est la commande qui affiche ces informations ?
n'est-elle pas paramétrable pour n'afficher que les informations qui t'intéressent ? d'ailleurs, quelles sont-elles ?
de ce que je vois, lsblk peut le faire...
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#7 Le 23/11/2018, à 09:04
- pingouinux
Re : [Résolu] sed et récupératon entre guillemets
Ajouter \b devant la chaîne à rechercher, qui représente une chaîne vide.
sed -r 's/.*\bUUID="([^"]+)".*/\1/' <<<"$ligne"
grep -Po '(?<=\bUUID=")[^"]+' <<<"$ligne"
Hors ligne
#8 Le 23/11/2018, à 09:35
- diesel
Re : [Résolu] sed et récupératon entre guillemets
salut,
quelle est la commande qui affiche ces informations ?
n'est-elle pas paramétrable pour n'afficher que les informations qui t'intéressent ? d'ailleurs, quelles sont-elles ?de ce que je vois, lsblk peut le faire...
La commande, ce doit être "blkid".
Amicalement.
Jean-Marie
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne
#9 Le 23/11/2018, à 09:40
- ar barzh paour
Re : [Résolu] sed et récupératon entre guillemets
@watael
c'est soit blkid soit un fichier construit à la main
lsblk , je ne connaissais pas à l'époque où j'ai commencé mon script , ça m'obligerait à revoir pas mal de choses..
l'avantage de lsblk c'est la non utilisation de sudo
mais je n'arrive pas à obtenir NAME UUID LABEL sur la même ligne
jpb@jpb-POWERMATE-VL280:~$ lsblk -a -o +LABEL -o +UUID
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT UUID
├─sda1 8:1 0 372,6G 0 part /media/film f028ddf3-d3d9-49fa-a32f-e824801e87f0
@pingouinux trop fort pour moi
\bUUID
Dernière modification par ar barzh paour (Le 23/11/2018, à 09:41)
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne
#10 Le 23/11/2018, à 09:47
- Watael
Re : [Résolu] sed et récupératon entre guillemets
$ lsblk -nl -oNAME,UUID,LABEL
$ while read -r name uuid label; do test -n "$uuid" && echo "$name $uuid $label"; done < <(lsblk -nl -o name,uuid,label)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#11 Le 23/11/2018, à 10:14
- ar barzh paour
Re : [Résolu] sed et récupératon entre guillemets
@watael
merci pour la syntaxe
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne
#12 Le 23/11/2018, à 10:17
- pingouinux
Re : [Résolu] sed et récupératon entre guillemets
Tu peux aussi récupérer directement ce qui t'intéresse :
LABEL=$(lsblk -no label /dev/sda2)
UUID=$(lsblk -no uuid /dev/sda2)
Hors ligne
#13 Le 23/11/2018, à 10:36
- Watael
Re : [Résolu] sed et récupératon entre guillemets
mais ça veut dire exécuter plusieurs fois la commande.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne