[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Récupérer le résultat d'une commande sed dans une variable ou un fichier : problème...



Oui, en effet, je voulais faire ça : donner la valeur d'une variable à manger à sed.
Et je n'ai même pas de fichier mais une variable à traiter.
J'avais créé un fichier pour tenter de débloquer la situation avec une situation plus connue avec sed.

TRUC est fournie par un traitement précédent du script.
Et dans le script, j'obtiens RES  ainsi :
RES=$(echo "$TRUC" | sed '/^abc\|^$/! { p; s|^|  -> '"${DOMAIN}"'|g }')

Comment expliquer que la commande prend un fichier comme argument :
sed '/^abc\|^$/! { p; s|^|  -> '"${DOMAIN}"'|g }' monfichier #SUCCES

mais refuse de prendre la valeur d'une variable ?
sed '/^abc\|^$/! { p; s|^|  -> '"${DOMAIN}"'|g }' "$TRUC" #ECHEC

J'ai du mal à discerner la cause exacte.
Est-ce une simple erreur de type ?
Par exemple, l'argument est un fichier qui contient une chaîne de caractère Vs une chaîne de caractère d'une variable.

Merci encore

De: "Marc Chantreux" <mc@unistra.fr>
À: "roger tarani" <roger.tarani@free.fr>
Cc: "Liste Debian" <debian-user-french@lists.debian.org>
Envoyé: Jeudi 4 Novembre 2021 22:09:11
Objet: Re: Récupérer le résultat d'une commande sed dans une variable ou un fichier : problème...

$ TRUC=$(cat monfichier)
 $ RES=$(sed '/^abc\|^$/! { p; s|^|  -> '"${DOMAIN}"'|g }'  "$TRUC")



 sed: can't read
 abc-----
 foo
 bar
 
 abc-----
 baz
 : No such file or directory:
 
 
 Idem avec :
 $ sed '/^abc\|^$/! { p; s|^|  -> '"${DOMAIN}"'|g }'  "$TRUC"
 
 
 ***
 Je me dis donc qu'il faut donner à sed l'argument qu'il attend : cad un nom de fichier.
 Or, ce n'est pas le cas car je lui donne la valeur d'une variable.
 Et il me répond qu'il cherche à ouvrir un fichier qui n'existe pas "No such file or directory".

 Finalement, j'ai tenté d'utiliser un pipe ET CA MARCHE !!!
 RES=$(echo "$TRUC" | sed '/^abc\|^$/! { p; s|^|  -> '"${DOMAIN}"'|g }')

ben ... ok j'étais loin de m'imaginer que tu voulais vraiment filer le
contenu d'une variable comme argument de sed mais oui en reprenant tes
mails: c'était bien noté :(

sed (comme beaucoup de filtres) une liste de fichiers a traiter en
argument (ou alors stdin par defaut)

au passage du coup:

TRUC=$( cat monfichier )
RES=$(echo "$TRUC" | sed '/^abc\|^$/! { p; s|^|  -> '"${DOMAIN}"'|g }')

s'écrit en fait

sed '/^abc\|^$/! { p; s|^|  -> '"${DOMAIN}"'|g }' monfichier

ou si tu veux utiliser les redirections pour avoir le nom du fichier
devant (c'est plus simple à la relecture)

< monfichier sed '/^abc\|^$/! { p; s|^|  -> '"${DOMAIN}"'|g }'

--
Marc Chantreux
Direction du numérique de l'Université de Strasbourg
Pôle de Calcul et Services Avancés à la Recherche (CESAR)
http://annuaire.unistra.fr/p/20200

Reply to: