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 16/11/2020, à 08:37

Smwa

[RESOLU] Bash - espaces et suppression caractères fin de ligne

Bonjour,
Toujours dans mon apprentissage du Bash je bloque un peu sur un petit détail.

Mes variables
monfichier=chemin/vers/mon/fichier

contenu du fichier

jaune
vert
blanc
rouge

Resultat souhaité :

jaune | vert | blanc | rouge

J'ai donc essayé :

variable=`cat $monfichier | tr "\n" "\ |\ " `

et j'obtiens comme valeur de variable :

jaune|vert|blanc|rouge|

Je ne parviens pas à maintenir les espace autour des pipes, et j'aimerai qu'il n'y ait pas le pipe à la fin de ma ligne, je n'arrive pas à trouver comment le supprimer.
je progresse mais mon point faible reste toujours les expressions régulières, métacaractères etc sad

Auriez-vous une piste s'il vous plaît ?
Merci pour votre attention et votre aide !

Bonne journée à tous smile

Dernière modification par Smwa (Le 16/11/2020, à 09:51)

Hors ligne

#2 Le 16/11/2020, à 09:08

Hizoka

Re : [RESOLU] Bash - espaces et suppression caractères fin de ligne

Salut,

variable=`cat $monfichier | tr "\n" "\ |\ " `

Beurk, si tu apprends, comment en arrives tu à utiliser ` qui est déprécié depuis longtemps ?

Pourquoi protéger les espaces ici ?

De toute facon, tr ne permet pas de changer par plusieurs caracteres.

Donc tu peux toujours les ajouter après coup.

variable=$(cat $monfichier | tr "\n" "|" )
variable="${variable/%|}" # Suppression du dernier |
variable="${variable//|/ | }" # Remplacement de tous les | par " | "

KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#3 Le 16/11/2020, à 09:24

pingouinux

Re : [RESOLU] Bash - espaces et suppression caractères fin de ligne

Bonjour,
Autre solution :

$ variable=$(sed -z 's/\n/ | /g;s/...$/\n/' "$monfichier")
$ echo "$variable"
jaune | vert | blanc | rouge

Hors ligne

#4 Le 16/11/2020, à 09:27

Smwa

Re : [RESOLU] Bash - espaces et suppression caractères fin de ligne

Bonjour et merci pour votre aide !
Vos deux réponses m'aident beaucoup.

@pingouinux
Je vais éplucher le manuel de sed, car je ne connaissais pas plus que ça , mais ça à l'air très utile !

@Hizoka

Hizoka a écrit :

Salut,

variable=`cat $monfichier | tr "\n" "\ |\ " `

Beurk, si tu apprends, comment en arrives tu à utiliser ` qui est déprécié depuis longtemps ?

Et bien ce sont les syntaxes que j'ai appris en cours ^^ j'ignorais que c'était déprécié.
Je veux bien savoir pourquoi du coup ! histoire d'apprendre proprement !

Hors ligne

#5 Le 16/11/2020, à 10:03

Sciensous

Re : [RESOLU] Bash - espaces et suppression caractères fin de ligne

et sans les espaces:

paste -s -d'|' fichier

cool


antiX 19 et 21 et Ubuntu 20.04 et 22.04
( sous LXDE et gnome-shell )

Hors ligne

#6 Le 16/11/2020, à 10:10

Watael

Re : [RESOLU] Bash - espaces et suppression caractères fin de ligne

Et bien ce sont les syntaxes que j'ai appris en cours

avec un codeur, ou avec un mec entre deux périodes de vacances ?
parce qu'alors c'est soit un mauvais codeur, soit un prof. big_smile

Je veux bien savoir pourquoi du coup ! histoire d'apprendre proprement !

à cause de la pénibilité à les imbriquer, car les backticks requiert d'être protégés à l'intérieur d'autres backticks.

Dernière modification par Watael (Le 16/11/2020, à 10:13)


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

Hors ligne

#7 Le 16/11/2020, à 11:26

Smwa

Re : [RESOLU] Bash - espaces et suppression caractères fin de ligne

Watael a écrit :

Et bien ce sont les syntaxes que j'ai appris en cours

avec un codeur, ou avec un mec entre deux périodes de vacances ?
parce qu'alors c'est soit un mauvais codeur, soit un prof. big_smile

Je veux bien savoir pourquoi du coup ! histoire d'apprendre proprement !

à cause de la pénibilité à les imbriquer, car les backticks requiert d'être protégés à l'intérieur d'autres backticks.

Avec notre prof, qui est donc maître de conférence dans notre cursus universitaire ^^''
Après c'est peut-être moi aussi qui ait fait un mauvais amalgame !!
car au démarrage j'ai vraiment eu du mal avec la théorie, je commence tout juste à comprendre en pratiquant.
Il a très bien pu nous montrer les 2 manières, en nous précisant que l'une était dépréciée, et moi je ne l'ai peut-être pas retenu ou mal noté !! en cours magistral c'est parfois difficile de réussir à tout entendre, noter, comprendre. sad

Hors ligne

#8 Le 16/11/2020, à 11:28

Hizoka

Re : [RESOLU] Bash - espaces et suppression caractères fin de ligne

Watael a écrit :

parce qu'alors c'est soit un mauvais codeur, soit un prof. big_smile

Merci lol


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#9 Le 16/11/2020, à 12:02

kamaris

Re : [RESOLU] Bash - espaces et suppression caractères fin de ligne

Autre solution, en utilisant vraiment que bash :

variable=$(printf '%s | ' $(<fichier))
echo ${variable% | }

Hors ligne

#10 Le 16/11/2020, à 12:11

Watael

Re : [RESOLU] Bash - espaces et suppression caractères fin de ligne

parce que chaque ligne du fichier ne contient qu'un seul mot, mais si l'une d'elles en comportait plusieurs... hmm

toujours en bash :

$ mapfile -t ar <"$fichier"
$ (IFS='|'; echo "${ar[*]}")
jaune noir|vert|blanc|rouge

Dernière modification par Watael (Le 16/11/2020, à 12:13)


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

Hors ligne