Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 20/11/2019, à 19:40

JFM2000

sed et astérisques

Il y a une bizarrerie dans le comportement de sed, expliquée ci-dessous.
quelqu'un peut-i me dire pourquoi ?
Pour créer cette bizarrerie :

1/ enregistrer le fichier texte suivant (c'est un exemple) dans fich :

fax-no:         +49 9831 505-3
abuse-mailbox:  abuse@hetzner.de
remarks:        *************************************************
remarks:        * For spam/abuse/security issues please contact *

2/ exécuter en ligne de commande :
echo $(sed -n 4p fich)

Avec mon linux, le résultat est surprenant : les astérisques sont remplacés par le listing du répertoire !!

Hors ligne

#2 Le 20/11/2019, à 19:49

Watael

Re : sed et astérisques

salut,

ce n'est pas le comportement de sed, c'est celui du shell.

il est inutile de echo une substitution de commandes
et, UMQ!


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#3 Le 20/11/2019, à 20:04

pingouinux

Re : sed et astérisques

Bonsoir,
C'est en effet comme si tu faisais :

echo remarks:        * For spam/abuse/security issues please contact *

Les astérisques sont alors remplacés.

Tu as deux façons d'obtenir ce que tu veux :

1) Mauvaise méthode, comme l'explique Watael

echo "$(sed -n 4p fich)"

2) Bonne méthode

sed -n 4p fich

Hors ligne

#4 Le 20/11/2019, à 20:09

JFM2000

Re : sed et astérisques

Vous êtes très forts !!
Je n'aurais jamais pu deviner une chose pareille.
Merci
(je n'ai plus qu'à réécrire tous mes scripts !!)

Hors ligne

#5 Le 20/11/2019, à 20:27

JFM2000

Re : sed et astérisques

Ceci dit, je ne parviens pas à mettre le résultat de sed -n 4p fich dans une variable. (mais seulement dans un fichier, que je peux, lui,  afficher correctement)
Pouvez vous encore m'aider ?
Merci !

Hors ligne

#6 Le 20/11/2019, à 20:40

JFM2000

Re : sed et astérisques

JE dois passer à côté de qqch de fondamental, car je ne comprends pas le pourquoi de ces différences (OK / NOK ?)

echo "aze*eza" > fich1 ; cat fich1 #OK
a=$(cat fich1) ; echo $a #OK

sed -n 4p fich > fich2 ; cat fich2 #OK
a=$(cat fich2) ; echo $a #NOK!

(pour mémoire, fich est un fichier texte donné comme exemple :

fax-no:         +49 9831 505-3
abuse-mailbox:  abuse@hetzner.de
remarks:        *************************************************
remarks:        * For spam/abuse/security issues please contact *
)

Hors ligne

#7 Le 20/11/2019, à 20:43

Watael

Re : sed et astérisques

j'ai dit : UMQ!!!!!

edit:
ce qui en stfw ne retourne pas grand-chose.
UMQ = Use More Quotes!

Dernière modification par Watael (Le 20/11/2019, à 20:45)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#8 Le 20/11/2019, à 20:44

Zakhar

Re : sed et astérisques

Tu as lu ça : https://www.gnu.org/software/bash/manua … sions.html

Ça explique bien des choses !

Attention, certains sont des "bashisms" donc si tu veux écrire des scripts propres et compatibles, à éviter (process substitution par exemple).

Dernière modification par Zakhar (Le 20/11/2019, à 20:47)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#9 Le 20/11/2019, à 20:45

pingouinux

Re : sed et astérisques

Même principe :

 a=$(cat fich2) ; echo "$a"
a=$(sed -n 4p fich); echo "$a"

Dernière modification par pingouinux (Le 20/11/2019, à 20:46)

Hors ligne