Bonjour Roger,
en premier il ne faut pas prendre l'adresse complète, mais
simplement "domain.tld" autrement tu seras contraint d'écrire
l'adresse complète en incluant les caractères d'échappement
après "http:// "
Ensuite, pourrais-tu expliquer ce que tu souhaites réellement
obtenir à la fin, car c'est un peu confus et j'ai l'impression
que tu as fait un copié coller de scripts glané de ci et delà
sans avoir réussi à comprendre la syntaxe ....
pour l'url :
http\:/\/\domain\.com
désolé, mais je suis complètement rouillé et je conseille de relire la façon
d'écrire une url dans la doc de procmail ....
En solution annexe pourquoi ne pas vouloir employer grep ?
Merci pour ton aimable attention
Bien à toi
Bernard
De: "roger tarani" <roger.tarani@free.fr>
À: "Liste Debian" <debian-user-french@lists.debian.org>
Envoyé: Jeudi 4 Novembre 2021 02:49:53
Objet: Récupérer le résultat d'une commande sed dans une variable ou un fichier : problème...
Bonjour,
Dans un script (bash 5.0.3(1), debian 10), je tente de récupérer le résultat d'une commande sed dans une variable.
DOMAIN=http://toto.com/
sed '/^abc\|^$/! { p; s|^| -> '$DOMAIN'|g }' mon_fichier
Dans la commande, le séparateur de la substitution est | car avec / il y a un conflit avec le / de la cariable DOMAIN
J'ai tenté diverses expressions, comme par exemple dans une variable :
RES=$(sed '/^abc\|^$/! { p; s|^| -> '$DOMAIN'|g }')ou en écrivant dans un fichier, avec une subsitution de commande ou sans :
$(sed '/^abc\|^$/! { p; s|^| -> '"$DOMAIN"'|g }' "$RES" > mon_fichier)
ou sans :
$(sed '/^abc\|^$/! { p; s|^| -> '"$DOMAIN"'|g }' "$RES" > mon_fichier)
Dans le script, je n'arrive pas du tout à obtenir le résultat escompté, tant via la variable que par le fichier : RIEN, même pas le résultat aplati/sans séparateur que j'obtiens en ligne de commande ci-dessous.
En ligne de commande, j'obtiens exactement le résultat escompté sur stdout ou dans le fichier.
foo
bar
baz
truc
machin
TOUTEFOIS, il y a un indice pour la question posée. Quand je fais :
echo $RES
J'obtiens le résultat aplati, sans séparateur :
foo bar baz truc machinJ'ai écumé de nombreux forums où ce problème est soulevé. Sans trouver la clef.
J'ai tenté de prende une valeur de DOMAIN sans / pour une _expression_ de sed avec des / au lieu de | : idem.
Quel mystère y a-t-il qui m'échapperait donc ?
Je me dis qu'il y a une option de sed qui m'échappe ou une obscure histoire de contexte bash.
Merci pour vos lumières/bougies/loupiotes !
Cordialement
Roger