#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
Auriez-vous une piste s'il vous plaît ?
Merci pour votre attention et votre aide !
Bonne journée à tous
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
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
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.
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.
En ligne
#7 Le 16/11/2020, à 11:26
- Smwa
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.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.
Hors ligne
#8 Le 16/11/2020, à 11:28
- Hizoka
Re : [RESOLU] Bash - espaces et suppression caractères fin de ligne
parce qu'alors c'est soit un mauvais codeur, soit un prof.
Merci
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...
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.
En ligne