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

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 machin


J'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

Reply to: